shaka-player 3.3.0 → 3.3.3
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/.csslintrc +11 -1
- package/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
- package/.github/pull_request_template.md +6 -34
- package/.github/workflows/build-and-test.yaml +130 -0
- package/.github/workflows/custom-actions/prep-for-appspot/action.yaml +56 -0
- package/.github/workflows/custom-actions/set-commit-status/action.yaml +41 -0
- package/.github/workflows/demo-version-index.yaml +29 -0
- package/.github/workflows/nightly-demo.yaml +42 -0
- package/.github/workflows/release-please.yaml +145 -0
- package/.github/workflows/safari-homedir-launcher.sh +18 -0
- package/.github/workflows/selenium-lab-tests.yaml +93 -0
- package/AUTHORS +2 -0
- package/CHANGELOG.md +1722 -1640
- package/CONTRIBUTING.md +2 -2
- package/CONTRIBUTORS +2 -0
- package/README.md +7 -7
- package/app-engine/README.md +9 -0
- package/app-engine/demo-version-index/README.md +14 -0
- package/app-engine/demo-version-index/app.yaml +2 -0
- package/app-engine/demo-version-index/main.py +162 -0
- package/app-engine/demo-version-index/requirements.txt +6 -0
- package/app-engine/demo-version-index/templates/index.html +114 -0
- package/app-engine/shaka-player-demo/README.md +18 -0
- package/app-engine/shaka-player-demo/app.yaml +61 -0
- package/app-engine/shaka-player-demo/main.py +95 -0
- package/app-engine/shaka-player-demo/posters/10yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/10yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/1yo.jpg +0 -0
- package/app-engine/shaka-player-demo/posters/2yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/2yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/3yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/3yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/4yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/4yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/5yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/5yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/6yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/6yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/7yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/7yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/8yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/8yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/9yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/9yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/audioOnly.gif +0 -0
- package/app-engine/shaka-player-demo/posters/audioRickRoll.gif +0 -0
- package/app-engine/shaka-player-demo/posters/colorbars.gif +0 -0
- package/app-engine/shaka-player-demo/posters/fireworks.jpg +0 -0
- package/app-engine/shaka-player-demo/posters/party-hat.png +0 -0
- package/app-engine/shaka-player-demo/posters/sources.txt +46 -0
- package/app-engine/shaka-player-demo/posters/standard.png +0 -0
- package/app-engine/shaka-player-demo/posters/trek.jpg +0 -0
- package/app-engine/shaka-player-demo/posters/valentines.png +0 -0
- package/app-engine/shaka-player-demo/posters/zombie.jpg +0 -0
- package/app-engine/shaka-player-demo/posters.py +110 -0
- package/app-engine/shaka-player-demo/requirements.txt +5 -0
- package/app-engine/shaka-player-demo/time.txt +1 -0
- package/build/README.md +1 -1
- package/build/checkversion.py +1 -1
- package/build/conformance.textproto +196 -169
- package/build/docker/Dockerfile +20 -0
- package/build/docker/docker-compose.yml +10 -0
- package/build/gendeps.py +18 -15
- package/build/shaka-lab.yaml +163 -0
- package/build/shakaBuildHelpers.py +4 -29
- package/build/test.py +93 -28
- package/build/types/polyfill +1 -0
- package/build/wrapper.template.js +2 -2
- package/demo/TengwarTelcontar.woff2 +0 -0
- package/demo/asset_card.js +1 -2
- package/demo/cast_receiver/index.html +1 -1
- package/demo/cast_receiver/receiver_app.css +14 -14
- package/demo/common/assets.js +2 -0
- package/demo/config.js +0 -1
- package/demo/custom.js +0 -1
- package/demo/customWarning.txt +2 -2
- package/demo/demo.less +29 -18
- package/demo/demo_uncompiled.js +1 -13
- package/demo/index.html +1 -1
- package/demo/main.js +3 -3
- package/dist/controls.css +3 -3
- package/dist/controls.css.map +1 -1
- package/dist/demo.compiled.debug.js +191 -194
- package/dist/demo.compiled.debug.map +4 -4
- package/dist/demo.compiled.js +191 -194
- package/dist/demo.compiled.map +4 -4
- package/dist/demo.css +1 -1
- package/dist/demo.css.map +1 -1
- package/dist/deps.js +233 -226
- package/dist/locales.js +30 -30
- package/dist/receiver.compiled.debug.js +43 -45
- package/dist/receiver.compiled.debug.map +4 -4
- package/dist/receiver.compiled.js +43 -45
- package/dist/receiver.compiled.map +4 -4
- package/dist/shaka-player.compiled.d.ts +272 -238
- package/dist/shaka-player.compiled.debug.d.ts +272 -238
- package/dist/shaka-player.compiled.debug.externs.js +53 -16
- package/dist/shaka-player.compiled.debug.js +393 -394
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +53 -16
- package/dist/shaka-player.compiled.js +840 -843
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +318 -293
- package/dist/shaka-player.ui.debug.d.ts +318 -293
- package/dist/shaka-player.ui.debug.externs.js +55 -27
- package/dist/shaka-player.ui.debug.js +415 -417
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +55 -27
- package/dist/shaka-player.ui.js +997 -1000
- package/dist/shaka-player.ui.map +4 -4
- package/docs/design/REDESIGN.md +33 -33
- package/docs/design/bg-fetch.md +2 -2
- package/docs/design/codec_preferences.md +1 -1
- package/docs/design/dash-audio-channels.md +3 -3
- package/docs/design/dash-manifests.md +1 -1
- package/docs/design/gap-jumping.md +3 -3
- package/docs/design/preload.md +2 -2
- package/docs/tutorials/faq.md +8 -8
- package/docs/tutorials/index.json +1 -0
- package/docs/tutorials/plugins.md +3 -3
- package/docs/tutorials/selenium-grid-config.md +122 -0
- package/docs/tutorials/welcome.md +10 -2
- package/externs/cmcd.js +186 -0
- package/externs/shaka/player.js +8 -0
- package/externs/shaka/text.js +10 -0
- package/karma.conf.js +156 -45
- package/lib/abr/simple_abr_manager.js +12 -6
- package/lib/ads/ad_manager.js +1 -0
- package/lib/cast/cast_proxy.js +6 -4
- package/lib/cast/cast_receiver.js +3 -0
- package/lib/cea/cea608_data_channel.js +2 -2
- package/lib/cea/cea708_service.js +5 -4
- package/lib/cea/mp4_cea_parser.js +11 -5
- package/lib/cea/sei_processor.js +6 -3
- package/lib/dash/dash_parser.js +40 -30
- package/lib/dash/mpd_utils.js +4 -5
- package/lib/dash/segment_list.js +1 -2
- package/lib/dash/segment_template.js +3 -3
- package/lib/hls/hls_parser.js +41 -9
- package/lib/hls/manifest_text_parser.js +4 -3
- package/lib/media/adaptation_set.js +1 -2
- package/lib/media/content_workarounds.js +2 -2
- package/lib/media/drm_engine.js +3 -2
- package/lib/media/media_source_engine.js +3 -2
- package/lib/media/mp4_segment_index_parser.js +1 -4
- package/lib/media/playhead.js +2 -2
- package/lib/media/presentation_timeline.js +18 -8
- package/lib/media/quality_observer.js +17 -34
- package/lib/media/region_observer.js +39 -33
- package/lib/media/region_timeline.js +17 -19
- package/lib/media/segment_index.js +2 -1
- package/lib/media/segment_reference.js +19 -1
- package/lib/media/streaming_engine.js +12 -9
- package/lib/media/time_ranges_utils.js +1 -3
- package/lib/media/video_wrapper.js +1 -1
- package/lib/net/networking_engine.js +5 -1
- package/lib/offline/storage.js +12 -13
- package/lib/player.js +87 -41
- package/lib/polyfill/all.js +2 -3
- package/lib/polyfill/encryption_scheme.js +1 -1
- package/lib/polyfill/media_capabilities.js +32 -17
- package/lib/polyfill/mediasource.js +1 -1
- package/lib/polyfill/symbol.js +46 -0
- package/lib/text/cue.js +7 -1
- package/lib/text/simple_text_displayer.js +2 -1
- package/lib/text/ttml_text_parser.js +92 -63
- package/lib/text/ui_text_displayer.js +18 -12
- package/lib/util/buffer_utils.js +1 -3
- package/lib/util/cmcd_manager.js +47 -201
- package/lib/util/ebml_parser.js +3 -3
- package/lib/util/error.js +1 -1
- package/lib/util/fake_event_target.js +21 -1
- package/lib/util/iterables.js +0 -46
- package/lib/util/mp4_box_parsers.js +1 -4
- package/lib/util/mp4_parser.js +5 -7
- package/lib/util/periods.js +10 -11
- package/lib/util/platform.js +3 -3
- package/lib/util/pssh.js +1 -4
- package/lib/util/stream_utils.js +88 -11
- package/lib/util/string_utils.js +3 -5
- package/lib/util/uint8array_utils.js +3 -5
- package/lib/util/xml_utils.js +34 -7
- package/package.json +62 -40
- package/roadmap.md +17 -17
- package/shaka-player.uncompiled.js +1 -0
- package/test/abr/simple_abr_manager_unit.js +3 -8
- package/test/ads/ad_manager_unit.js +0 -6
- package/test/cast/cast_proxy_unit.js +0 -8
- package/test/cast/cast_receiver_integration.js +1 -18
- package/test/cast/cast_receiver_unit.js +1 -9
- package/test/cast/cast_sender_unit.js +0 -6
- package/test/cast/cast_utils_unit.js +0 -13
- package/test/cea/cea608_memory_unit.js +0 -5
- package/test/cea/cea708_service_unit.js +0 -7
- package/test/cea/cea708_window_unit.js +0 -5
- package/test/cea/cea_decoder_unit.js +0 -6
- package/test/cea/dtvcc_packet_builder_unit.js +0 -3
- package/test/cea/dtvcc_packet_unit.js +0 -5
- package/test/cea/mp4_cea_parser_unit.js +0 -4
- package/test/dash/dash_parser_content_protection_unit.js +1 -10
- package/test/dash/dash_parser_live_unit.js +45 -15
- package/test/dash/dash_parser_manifest_unit.js +4 -17
- package/test/dash/dash_parser_segment_base_unit.js +1 -8
- package/test/dash/dash_parser_segment_list_unit.js +1 -7
- package/test/dash/dash_parser_segment_template_unit.js +0 -9
- package/test/dash/mpd_utils_unit.js +3 -11
- package/test/demo/demo_unit.js +0 -5
- package/test/deprecate/enforcer_unit.js +0 -4
- package/test/deprecate/version_unit.js +0 -2
- package/test/hls/hls_live_unit.js +2 -14
- package/test/hls/hls_parser_unit.js +76 -15
- package/test/hls/manifest_text_parser_unit.js +0 -10
- package/test/media/adaptation_set_criteria_unit.js +3 -7
- package/test/media/adaptation_set_unit.js +0 -2
- package/test/media/buffering_observer_unit.js +1 -4
- package/test/media/closed_caption_parser_unit.js +0 -3
- package/test/media/drm_engine_integration.js +2 -15
- package/test/media/drm_engine_unit.js +7 -27
- package/test/media/manifest_parser_unit.js +0 -4
- package/test/media/media_source_engine_integration.js +0 -7
- package/test/media/media_source_engine_unit.js +1 -14
- package/test/media/mp4_segment_index_parser_unit.js +0 -4
- package/test/media/play_rate_controller_unit.js +0 -4
- package/test/media/playhead_unit.js +8 -16
- package/test/media/presentation_timeline_unit.js +4 -7
- package/test/media/quality_observer_unit.js +4 -5
- package/test/media/region_observer_unit.js +40 -10
- package/test/media/region_timeline_unit.js +40 -25
- package/test/media/segment_index_unit.js +0 -6
- package/test/media/segment_reference_unit.js +0 -3
- package/test/media/stall_detector_unit.js +0 -5
- package/test/media/streaming_engine_integration.js +11 -37
- package/test/media/streaming_engine_unit.js +155 -34
- package/test/media/time_ranges_utils_unit.js +0 -2
- package/test/media/transmuxer_integration.js +0 -6
- package/test/media/webm_segment_index_parser_unit.js +0 -4
- package/test/net/data_uri_plugin_unit.js +0 -7
- package/test/net/http_plugin_unit.js +0 -9
- package/test/net/networking_engine_unit.js +0 -11
- package/test/offline/download_progress_estimator_unit.js +0 -2
- package/test/offline/indexeddb_storage_unit.js +0 -6
- package/test/offline/manifest_convert_unit.js +0 -8
- package/test/offline/offline_integration.js +1 -10
- package/test/offline/offline_manifest_parser_unit.js +0 -6
- package/test/offline/offline_scheme_unit.js +0 -8
- package/test/offline/offline_uri_unit.js +0 -2
- package/test/offline/storage_compatibility_unit.js +1 -14
- package/test/offline/storage_integration.js +1 -27
- package/test/player_external.js +2 -10
- package/test/player_integration.js +63 -36
- package/test/player_load_graph_integration.js +1 -6
- package/test/player_src_equals_external.js +3 -9
- package/test/player_src_equals_integration.js +41 -15
- package/test/player_unit.js +71 -46
- package/test/routing/walker_unit.js +0 -8
- package/test/test/assets/chapters.vtt +2 -2
- package/test/test/assets/chapters2.vtt +10 -0
- package/test/test/assets/large_file.mpd +1 -1
- package/test/test/boot.js +75 -22
- package/test/test/externs/jasmine.js +2 -2
- package/test/test/externs/karma.js +4 -0
- package/test/test/namespace.js +10 -0
- package/test/test/util/canned_idb.js +0 -8
- package/test/test/util/cea_utils.js +0 -6
- package/test/test/util/dash_parser_util.js +0 -13
- package/test/test/util/fake_ad.js +0 -3
- package/test/test/util/fake_ad_manager.js +0 -9
- package/test/test/util/fake_demo_main.js +0 -5
- package/test/test/util/fake_drm_engine.js +0 -6
- package/test/test/util/fake_media_source_engine.js +0 -7
- package/test/test/util/fake_networking_engine.js +0 -5
- package/test/test/util/fake_text_displayer.js +0 -5
- package/test/test/util/indexeddb_utils.js +1 -10
- package/test/test/util/jasmine_fetch.js +0 -1
- package/test/test/util/loader.js +0 -18
- package/test/test/util/manifest_generator.js +9 -14
- package/test/test/util/manifest_parser_util.js +0 -6
- package/test/test/util/offline_utils.js +0 -5
- package/test/test/util/simple_fakes.js +9 -26
- package/test/test/util/stream_generator.js +0 -14
- package/test/test/util/streaming_engine_util.js +0 -15
- package/test/test/util/test_scheme.js +1 -19
- package/test/test/util/ttml_utils.js +79 -0
- package/test/test/util/ui_utils.js +0 -9
- package/test/test/util/util.js +15 -26
- package/test/test/util/waiter.js +84 -43
- package/test/text/cue_integration.js +0 -4
- package/test/text/lrc_text_parser_unit.js +0 -4
- package/test/text/mp4_ttml_parser_unit.js +10 -23
- package/test/text/mp4_vtt_parser_unit.js +1 -7
- package/test/text/sbv_text_parser_unit.js +0 -4
- package/test/text/simple_text_displayer_unit.js +1 -8
- package/test/text/srt_text_parser_unit.js +0 -4
- package/test/text/ssa_text_parser_unit.js +0 -5
- package/test/text/text_engine_unit.js +2 -7
- package/test/text/text_track_integration.js +0 -2
- package/test/text/ttml_text_parser_unit.js +499 -239
- package/test/text/ui_text_displayer_unit.js +44 -41
- package/test/text/vtt_text_parser_unit.js +0 -9
- package/test/text/web_vtt_generator_unit.js +0 -3
- package/test/ui/ad_ui_unit.js +0 -11
- package/test/ui/localization_unit.js +0 -3
- package/test/ui/text_displayer_layout_unit.js +9 -19
- package/test/ui/ui_customization_unit.js +0 -6
- package/test/ui/ui_integration.js +0 -16
- package/test/ui/ui_unit.js +1 -17
- package/test/util/abortable_operation_unit.js +4 -9
- package/test/util/array_utils_unit.js +0 -2
- package/test/util/buffer_utils_unit.js +0 -2
- package/test/util/cmcd_manager_unit.js +29 -18
- package/test/util/data_view_reader_unit.js +0 -4
- package/test/util/ebml_parser_unit.js +0 -4
- package/test/util/event_manager_unit.js +0 -3
- package/test/util/fake_event_target_unit.js +0 -5
- package/test/util/functional_unit.js +1 -1
- package/test/util/iterables_unit.js +0 -64
- package/test/util/language_utils_unit.js +0 -3
- package/test/util/manifest_parser_utils_unit.js +0 -2
- package/test/util/mp4_box_parsers_unit.js +0 -5
- package/test/util/mp4_parser_unit.js +0 -4
- package/test/util/multi_map_unit.js +0 -3
- package/test/util/object_utils_unit.js +0 -2
- package/test/util/periods_unit.js +14 -7
- package/test/util/pssh_unit.js +0 -5
- package/test/util/state_history_unit.js +0 -2
- package/test/util/stream_utils_unit.js +39 -38
- package/test/util/string_utils_unit.js +0 -6
- package/test/util/text_parser_unit.js +0 -2
- package/test/util/xml_utils_unit.js +0 -4
- package/third_party/closure-uri/uri.js +21 -0
- package/ui/controls.js +3 -0
- package/ui/less/ad_controls.less +4 -4
- package/ui/less/buttons.less +5 -5
- package/ui/less/containers.less +9 -11
- package/ui/less/overflow_menu.less +4 -4
- package/ui/less/range_elements.less +5 -0
- package/ui/less/tooltip.less +1 -1
- package/ui/locales/sjn-translations.yaml +257 -0
- package/ui/locales/sjn.json +42 -0
- package/ui/localization.js +12 -36
- package/ui/text_selection.js +1 -0
- package/externs/media_capabilities.js +0 -16
- package/externs/svgelement.js +0 -18
- package/externs/webcrypto.js +0 -18
package/lib/util/pssh.js
CHANGED
|
@@ -9,8 +9,6 @@ goog.provide('shaka.util.Pssh');
|
|
|
9
9
|
goog.require('goog.asserts');
|
|
10
10
|
goog.require('shaka.log');
|
|
11
11
|
goog.require('shaka.util.BufferUtils');
|
|
12
|
-
goog.require('shaka.util.Functional');
|
|
13
|
-
goog.require('shaka.util.Iterables');
|
|
14
12
|
goog.require('shaka.util.Mp4Parser');
|
|
15
13
|
goog.require('shaka.util.Uint8ArrayUtils');
|
|
16
14
|
|
|
@@ -83,8 +81,7 @@ shaka.util.Pssh = class {
|
|
|
83
81
|
shaka.util.Uint8ArrayUtils.toHex(box.reader.readBytes(16)));
|
|
84
82
|
if (box.version > 0) {
|
|
85
83
|
const numKeyIds = box.reader.readUint32();
|
|
86
|
-
for (
|
|
87
|
-
shaka.util.Functional.ignored(_);
|
|
84
|
+
for (let i = 0; i < numKeyIds; i++) {
|
|
88
85
|
const keyId =
|
|
89
86
|
shaka.util.Uint8ArrayUtils.toHex(box.reader.readBytes(16));
|
|
90
87
|
this.cencKeyIds.push(keyId);
|
package/lib/util/stream_utils.js
CHANGED
|
@@ -419,14 +419,49 @@ shaka.util.StreamUtils = class {
|
|
|
419
419
|
*/
|
|
420
420
|
static async filterManifestByMediaCapabilities(
|
|
421
421
|
manifest, usePersistentLicenses) {
|
|
422
|
-
goog.asserts.assert(
|
|
422
|
+
goog.asserts.assert(navigator.mediaCapabilities,
|
|
423
423
|
'MediaCapabilities should be valid.');
|
|
424
424
|
|
|
425
425
|
await shaka.util.StreamUtils.getDecodingInfosForVariants(
|
|
426
426
|
manifest.variants, usePersistentLicenses, /* srcEquals= */ false);
|
|
427
427
|
manifest.variants = manifest.variants.filter((variant) => {
|
|
428
|
+
// See: https://github.com/shaka-project/shaka-player/issues/3860
|
|
428
429
|
const video = variant.video;
|
|
429
|
-
|
|
430
|
+
const ContentType = shaka.util.ManifestParserUtils.ContentType;
|
|
431
|
+
if (video) {
|
|
432
|
+
let videoCodecs = shaka.util.StreamUtils.patchVp9(video.codecs);
|
|
433
|
+
// For multiplexed streams. Here we must check the audio of the
|
|
434
|
+
// stream to see if it is compatible.
|
|
435
|
+
if (video.codecs.includes(',')) {
|
|
436
|
+
const allCodecs = video.codecs.split(',');
|
|
437
|
+
videoCodecs = shaka.util.ManifestParserUtils.guessCodecs(
|
|
438
|
+
ContentType.VIDEO, allCodecs);
|
|
439
|
+
const audioCodecs = shaka.util.ManifestParserUtils.guessCodecs(
|
|
440
|
+
ContentType.AUDIO, allCodecs);
|
|
441
|
+
const audioFullType = shaka.util.MimeUtils.getFullOrConvertedType(
|
|
442
|
+
video.mimeType, audioCodecs, ContentType.AUDIO);
|
|
443
|
+
if (!MediaSource.isTypeSupported(audioFullType)) {
|
|
444
|
+
return false;
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
const fullType = shaka.util.MimeUtils.getFullOrConvertedType(
|
|
448
|
+
video.mimeType, videoCodecs, ContentType.VIDEO);
|
|
449
|
+
if (!MediaSource.isTypeSupported(fullType)) {
|
|
450
|
+
return false;
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
const audio = variant.audio;
|
|
454
|
+
if (audio) {
|
|
455
|
+
const codecs =
|
|
456
|
+
shaka.util.StreamUtils.getCorrectAudioCodecs_(audio.codecs);
|
|
457
|
+
const fullType = shaka.util.MimeUtils.getFullOrConvertedType(
|
|
458
|
+
audio.mimeType, codecs, ContentType.AUDIO);
|
|
459
|
+
if (!MediaSource.isTypeSupported(fullType)) {
|
|
460
|
+
return false;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
// See: https://github.com/shaka-project/shaka-player/issues/3380
|
|
430
465
|
if (shaka.util.Platform.isXboxOne() && video &&
|
|
431
466
|
((video.width && video.width > 1920) ||
|
|
432
467
|
(video.height && video.height > 1080)) &&
|
|
@@ -468,7 +503,7 @@ shaka.util.StreamUtils = class {
|
|
|
468
503
|
return;
|
|
469
504
|
}
|
|
470
505
|
|
|
471
|
-
const mediaCapabilities =
|
|
506
|
+
const mediaCapabilities = navigator.mediaCapabilities;
|
|
472
507
|
|
|
473
508
|
const operations = [];
|
|
474
509
|
const getVariantDecodingInfos = (async (variant, decodingConfig) => {
|
|
@@ -562,12 +597,8 @@ shaka.util.StreamUtils = class {
|
|
|
562
597
|
}
|
|
563
598
|
}
|
|
564
599
|
if (audio) {
|
|
565
|
-
// Some Tizen devices seem to misreport AC-3 support, but correctly
|
|
566
|
-
// report EC-3 support. So query EC-3 as a fallback for AC-3.
|
|
567
|
-
// See https://github.com/google/shaka-player/issues/2989 for details.
|
|
568
600
|
const codecs =
|
|
569
|
-
(audio.codecs
|
|
570
|
-
shaka.util.Platform.isTizen()) ? 'ec-3' : audio.codecs;
|
|
601
|
+
shaka.util.StreamUtils.getCorrectAudioCodecs_(audio.codecs);
|
|
571
602
|
const fullType = shaka.util.MimeUtils.getFullOrConvertedType(
|
|
572
603
|
audio.mimeType, codecs, ContentType.AUDIO);
|
|
573
604
|
|
|
@@ -678,6 +709,27 @@ shaka.util.StreamUtils = class {
|
|
|
678
709
|
return configs;
|
|
679
710
|
}
|
|
680
711
|
|
|
712
|
+
|
|
713
|
+
/**
|
|
714
|
+
* Generates the correct audio codec for MediaDecodingConfiguration and
|
|
715
|
+
* for MediaSource.isTypeSupported.
|
|
716
|
+
* @param {string} codecs
|
|
717
|
+
* @return {string}
|
|
718
|
+
* @private
|
|
719
|
+
*/
|
|
720
|
+
static getCorrectAudioCodecs_(codecs) {
|
|
721
|
+
// Some Tizen devices seem to misreport AC-3 support, but correctly
|
|
722
|
+
// report EC-3 support. So query EC-3 as a fallback for AC-3.
|
|
723
|
+
// See https://github.com/shaka-project/shaka-player/issues/2989 for
|
|
724
|
+
// details.
|
|
725
|
+
if (shaka.util.Platform.isTizen()) {
|
|
726
|
+
return codecs.toLowerCase() == 'ac-3' ? 'ec-3' : codecs;
|
|
727
|
+
} else {
|
|
728
|
+
return codecs;
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
|
|
681
733
|
/**
|
|
682
734
|
* MediaCapabilities supports 'vp09...' codecs, but not 'vp9'. Translate vp9
|
|
683
735
|
* codec strings into 'vp09...', to allow such content to play with
|
|
@@ -989,6 +1041,31 @@ shaka.util.StreamUtils = class {
|
|
|
989
1041
|
static imageStreamToTrack(stream) {
|
|
990
1042
|
const ContentType = shaka.util.ManifestParserUtils.ContentType;
|
|
991
1043
|
|
|
1044
|
+
let width = stream.width || null;
|
|
1045
|
+
let height = stream.height || null;
|
|
1046
|
+
|
|
1047
|
+
// The stream width and height represent the size of the entire thumbnail
|
|
1048
|
+
// sheet, so divide by the layout.
|
|
1049
|
+
let reference = null;
|
|
1050
|
+
// Note: segmentIndex is built by default for HLS, but not for DASH, but
|
|
1051
|
+
// in DASH this information comes at the stream level and not at the
|
|
1052
|
+
// segment level.
|
|
1053
|
+
if (stream.segmentIndex) {
|
|
1054
|
+
reference = stream.segmentIndex.get(0);
|
|
1055
|
+
}
|
|
1056
|
+
let layout = stream.tilesLayout;
|
|
1057
|
+
if (reference) {
|
|
1058
|
+
layout = reference.getTilesLayout() || layout;
|
|
1059
|
+
}
|
|
1060
|
+
if (layout && width != null) {
|
|
1061
|
+
width /= Number(layout.split('x')[0]);
|
|
1062
|
+
}
|
|
1063
|
+
if (layout && height != null) {
|
|
1064
|
+
height /= Number(layout.split('x')[1]);
|
|
1065
|
+
}
|
|
1066
|
+
// TODO: What happens if there are multiple grids, with different
|
|
1067
|
+
// layout sizes, inside this image stream?
|
|
1068
|
+
|
|
992
1069
|
/** @type {shaka.extern.Track} */
|
|
993
1070
|
const track = {
|
|
994
1071
|
id: stream.id,
|
|
@@ -998,8 +1075,8 @@ shaka.util.StreamUtils = class {
|
|
|
998
1075
|
language: '',
|
|
999
1076
|
label: null,
|
|
1000
1077
|
kind: null,
|
|
1001
|
-
width
|
|
1002
|
-
height
|
|
1078
|
+
width,
|
|
1079
|
+
height,
|
|
1003
1080
|
frameRate: null,
|
|
1004
1081
|
pixelAspectRatio: null,
|
|
1005
1082
|
hdr: null,
|
|
@@ -1016,7 +1093,7 @@ shaka.util.StreamUtils = class {
|
|
|
1016
1093
|
channelsCount: null,
|
|
1017
1094
|
audioSamplingRate: null,
|
|
1018
1095
|
spatialAudio: false,
|
|
1019
|
-
tilesLayout:
|
|
1096
|
+
tilesLayout: layout || null,
|
|
1020
1097
|
audioBandwidth: null,
|
|
1021
1098
|
videoBandwidth: null,
|
|
1022
1099
|
originalVideoId: null,
|
package/lib/util/string_utils.js
CHANGED
|
@@ -10,7 +10,6 @@ goog.require('goog.asserts');
|
|
|
10
10
|
goog.require('shaka.log');
|
|
11
11
|
goog.require('shaka.util.BufferUtils');
|
|
12
12
|
goog.require('shaka.util.Error');
|
|
13
|
-
goog.require('shaka.util.Iterables');
|
|
14
13
|
goog.require('shaka.util.Lazy');
|
|
15
14
|
|
|
16
15
|
|
|
@@ -81,7 +80,7 @@ shaka.util.StringUtils = class {
|
|
|
81
80
|
const length = Math.floor(data.byteLength / 2);
|
|
82
81
|
const arr = new Uint16Array(length);
|
|
83
82
|
const dataView = shaka.util.BufferUtils.toDataView(data);
|
|
84
|
-
for (
|
|
83
|
+
for (let i = 0; i < length; i++) {
|
|
85
84
|
arr[i] = dataView.getUint16(i * 2, littleEndian);
|
|
86
85
|
}
|
|
87
86
|
return shaka.util.StringUtils.fromCharCode(arr);
|
|
@@ -158,9 +157,8 @@ shaka.util.StringUtils = class {
|
|
|
158
157
|
static toUTF16(str, littleEndian) {
|
|
159
158
|
const result = new ArrayBuffer(str.length * 2);
|
|
160
159
|
const view = new DataView(result);
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
const value = item.charCodeAt(0);
|
|
160
|
+
for (let i = 0; i < str.length; ++i) {
|
|
161
|
+
const value = str.charCodeAt(i);
|
|
164
162
|
view.setUint16(/* position= */ i * 2, value, littleEndian);
|
|
165
163
|
}
|
|
166
164
|
return result;
|
|
@@ -8,7 +8,6 @@ goog.provide('shaka.util.Uint8ArrayUtils');
|
|
|
8
8
|
|
|
9
9
|
goog.require('shaka.Deprecate');
|
|
10
10
|
goog.require('shaka.util.BufferUtils');
|
|
11
|
-
goog.require('shaka.util.Iterables');
|
|
12
11
|
goog.require('shaka.util.StringUtils');
|
|
13
12
|
|
|
14
13
|
|
|
@@ -74,9 +73,8 @@ shaka.util.Uint8ArrayUtils = class {
|
|
|
74
73
|
// byte.
|
|
75
74
|
const bytes = window.atob(str.replace(/-/g, '+').replace(/_/g, '/'));
|
|
76
75
|
const result = new Uint8Array(bytes.length);
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
result[i] = item.charCodeAt(0);
|
|
76
|
+
for (let i = 0; i < bytes.length; ++i) {
|
|
77
|
+
result[i] = bytes.charCodeAt(i);
|
|
80
78
|
}
|
|
81
79
|
return result;
|
|
82
80
|
}
|
|
@@ -91,7 +89,7 @@ shaka.util.Uint8ArrayUtils = class {
|
|
|
91
89
|
static fromHex(str) {
|
|
92
90
|
const size = str.length / 2;
|
|
93
91
|
const arr = new Uint8Array(size);
|
|
94
|
-
for (
|
|
92
|
+
for (let i = 0; i < size; i++) {
|
|
95
93
|
arr[i] = window.parseInt(str.substr(i * 2, 2), 16);
|
|
96
94
|
}
|
|
97
95
|
return arr;
|
package/lib/util/xml_utils.js
CHANGED
|
@@ -57,9 +57,13 @@ shaka.util.XmlUtils = class {
|
|
|
57
57
|
* @return {!Array.<!Element>} The child XML elements.
|
|
58
58
|
*/
|
|
59
59
|
static findChildren(elem, name) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
const found = [];
|
|
61
|
+
for (const child of elem.childNodes) {
|
|
62
|
+
if (child instanceof Element && child.tagName == name) {
|
|
63
|
+
found.push(child);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return found;
|
|
63
67
|
}
|
|
64
68
|
|
|
65
69
|
|
|
@@ -82,10 +86,14 @@ shaka.util.XmlUtils = class {
|
|
|
82
86
|
* @return {!Array.<!Element>} The child XML elements.
|
|
83
87
|
*/
|
|
84
88
|
static findChildrenNS(elem, ns, name) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
+
const found = [];
|
|
90
|
+
for (const child of elem.childNodes) {
|
|
91
|
+
if (child instanceof Element && child.localName == name &&
|
|
92
|
+
child.namespaceURI == ns) {
|
|
93
|
+
found.push(child);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return found;
|
|
89
97
|
}
|
|
90
98
|
|
|
91
99
|
|
|
@@ -103,6 +111,25 @@ shaka.util.XmlUtils = class {
|
|
|
103
111
|
}
|
|
104
112
|
|
|
105
113
|
|
|
114
|
+
/**
|
|
115
|
+
* Gets a namespace-qualified attribute.
|
|
116
|
+
* @param {!Element} elem The element to get from.
|
|
117
|
+
* @param {!Array.<string>} nsList The lis of namespace URIs.
|
|
118
|
+
* @param {string} name The local name of the attribute.
|
|
119
|
+
* @return {?string} The attribute's value, or null if not present.
|
|
120
|
+
*/
|
|
121
|
+
static getAttributeNSList(elem, nsList, name) {
|
|
122
|
+
// Some browsers return the empty string when the attribute is missing,
|
|
123
|
+
// so check if it exists first. See: https://mzl.la/2L7F0UK
|
|
124
|
+
for (const ns of nsList) {
|
|
125
|
+
if (elem.hasAttributeNS(ns, name)) {
|
|
126
|
+
return elem.getAttributeNS(ns, name);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
|
|
106
133
|
/**
|
|
107
134
|
* Gets the text contents of a node.
|
|
108
135
|
* @param {!Node} elem The XML element.
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "shaka-player",
|
|
3
3
|
"description": "DASH/EME video player library",
|
|
4
|
-
"version": "3.3.
|
|
5
|
-
"homepage": "https://github.com/
|
|
4
|
+
"version": "3.3.3",
|
|
5
|
+
"homepage": "https://github.com/shaka-project/shaka-player",
|
|
6
6
|
"author": "Google",
|
|
7
7
|
"maintainers": [
|
|
8
8
|
{
|
|
@@ -11,63 +11,85 @@
|
|
|
11
11
|
}
|
|
12
12
|
],
|
|
13
13
|
"devDependencies": {
|
|
14
|
-
"@
|
|
14
|
+
"@babel/core": "^7.17.5",
|
|
15
|
+
"@babel/polyfill": "^7.12.1",
|
|
16
|
+
"@babel/preset-env": "^7.16.11",
|
|
15
17
|
"@teppeis/clutz": "^1.0.29-4c95e12.v20190929",
|
|
16
|
-
"awesomplete": "^1.1.
|
|
17
|
-
"babel-
|
|
18
|
-
"babel-plugin-istanbul": "^4.1.6",
|
|
19
|
-
"babel-polyfill": "^6.26.0",
|
|
20
|
-
"babel-preset-env": "^1.7.0",
|
|
18
|
+
"awesomplete": "^1.1.5",
|
|
19
|
+
"babel-plugin-istanbul": "^6.1.1",
|
|
21
20
|
"cajon": "^0.4.4",
|
|
22
|
-
"
|
|
23
|
-
"
|
|
21
|
+
"code-prettify": "^0.1.0",
|
|
22
|
+
"color-themes-for-google-code-prettify": "^2.0.4",
|
|
23
|
+
"core-js": "^3.21.1",
|
|
24
|
+
"dialog-polyfill": "^0.5.6",
|
|
24
25
|
"es6-promise-polyfill": "^1.2.0",
|
|
25
|
-
"eslint": "^
|
|
26
|
-
"eslint-config-google": "^0.
|
|
26
|
+
"eslint": "^8.9.0",
|
|
27
|
+
"eslint-config-google": "^0.14.0",
|
|
27
28
|
"eslint-plugin-shaka-rules": "file:./build/eslint-plugin-shaka-rules",
|
|
28
29
|
"esprima": "^4.0.1",
|
|
29
30
|
"fastestsmallesttextencoderdecoder": "^1.0.22",
|
|
30
31
|
"fontfaceonload": "^1.0.2",
|
|
31
|
-
"google-closure-compiler-java": "^
|
|
32
|
-
"google-closure-
|
|
33
|
-
"
|
|
32
|
+
"google-closure-compiler-java": "^20220301.0.0",
|
|
33
|
+
"google-closure-deps": "https://gitpkg.now.sh/google/closure-library/closure-deps?d7736da6",
|
|
34
|
+
"google-closure-library": "^20220301.0.0",
|
|
35
|
+
"htmlhint": "^1.1.3",
|
|
34
36
|
"jasmine-ajax": "^4.0.0",
|
|
35
|
-
"jimp": "^0.
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"karma
|
|
39
|
-
"karma-
|
|
40
|
-
"karma-coverage": "^
|
|
41
|
-
"karma-
|
|
42
|
-
"karma-firefox-launcher": "^1.1.0",
|
|
43
|
-
"karma-ie-launcher": "^1.0.0",
|
|
44
|
-
"karma-jasmine": "^3.3.1",
|
|
37
|
+
"jimp": "^0.16.1",
|
|
38
|
+
"js-yaml": "^4.1.0",
|
|
39
|
+
"jsdoc": "github:joeyparrish/jsdoc#2ca85bb6",
|
|
40
|
+
"karma": "^6.3.16",
|
|
41
|
+
"karma-babel-preprocessor": "^8.0.2",
|
|
42
|
+
"karma-coverage": "^2.2.0",
|
|
43
|
+
"karma-jasmine": "^4.0.1",
|
|
45
44
|
"karma-jasmine-ajax": "^0.1.13",
|
|
45
|
+
"karma-local-wd-launcher": "^1.6.1",
|
|
46
46
|
"karma-opera-launcher": "^1.0.0",
|
|
47
|
-
"karma-
|
|
48
|
-
"karma-
|
|
49
|
-
"karma-spec-reporter": "0.0.32",
|
|
47
|
+
"karma-sourcemap-loader": "^0.3.8",
|
|
48
|
+
"karma-spec-reporter": "^0.0.34",
|
|
50
49
|
"karma-webdriver-launcher": "^1.0.8",
|
|
51
|
-
"less": "
|
|
52
|
-
"less-plugin-clean-css": "
|
|
50
|
+
"less": "https://gitpkg.now.sh/joeyparrish/less.js/packages/less?28c63a43",
|
|
51
|
+
"less-plugin-clean-css": "github:austingardner/less-plugin-clean-css#4e9e77bf",
|
|
53
52
|
"material-design-lite": "^1.3.0",
|
|
54
|
-
"mux.js": "^5.
|
|
55
|
-
"
|
|
56
|
-
"
|
|
53
|
+
"mux.js": "^5.14.1",
|
|
54
|
+
"open-sans-fonts": "^1.6.2",
|
|
55
|
+
"postcss-less": "^6.0.0",
|
|
56
|
+
"pwacompat": "^2.0.17",
|
|
57
|
+
"rimraf": "^3.0.2",
|
|
57
58
|
"sprintf-js": "^1.1.2",
|
|
58
|
-
"
|
|
59
|
-
"stylelint
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"which": "^
|
|
59
|
+
"ssim.js": "^3.5.0",
|
|
60
|
+
"stylelint": "^14.5.1",
|
|
61
|
+
"stylelint-config-standard": "^25.0.0",
|
|
62
|
+
"tippy.js": "^4.3.5",
|
|
63
|
+
"which": "^2.0.2"
|
|
64
|
+
},
|
|
65
|
+
"shakaCustom": {
|
|
66
|
+
"purposeOfDemoDeps": "These are the files from node_modules that need to be deployed with the demo app.",
|
|
67
|
+
"demoDeps": [
|
|
68
|
+
"awesomplete/awesomplete.css",
|
|
69
|
+
"awesomplete/awesomplete.min.js",
|
|
70
|
+
"dialog-polyfill/dialog-polyfill.css",
|
|
71
|
+
"dialog-polyfill/dist/dialog-polyfill.js",
|
|
72
|
+
"eme-encryption-scheme-polyfill/index.js",
|
|
73
|
+
"es6-promise-polyfill/promise.min.js",
|
|
74
|
+
"fastestsmallesttextencoderdecoder/EncoderDecoderTogether.min.js",
|
|
75
|
+
"google-closure-library/closure/goog/base.js",
|
|
76
|
+
"less/dist/less.js",
|
|
77
|
+
"material-design-lite/dist/material.indigo-blue.min.css",
|
|
78
|
+
"material-design-lite/dist/material.min.js",
|
|
79
|
+
"mux.js/dist/mux.min.js",
|
|
80
|
+
"popper.js/dist/umd/popper.min.js",
|
|
81
|
+
"pwacompat/pwacompat.min.js",
|
|
82
|
+
"tippy.js/umd/index.min.js",
|
|
83
|
+
"tippy.js/index.css"
|
|
84
|
+
]
|
|
63
85
|
},
|
|
64
86
|
"main": "dist/shaka-player.compiled.js",
|
|
65
87
|
"repository": {
|
|
66
88
|
"type": "git",
|
|
67
|
-
"url": "https://github.com/
|
|
89
|
+
"url": "https://github.com/shaka-project/shaka-player.git"
|
|
68
90
|
},
|
|
69
91
|
"bugs": {
|
|
70
|
-
"url": "https://github.com/
|
|
92
|
+
"url": "https://github.com/shaka-project/shaka-player/issues"
|
|
71
93
|
},
|
|
72
94
|
"license": "Apache-2.0",
|
|
73
95
|
"scripts": {
|
package/roadmap.md
CHANGED
|
@@ -10,49 +10,49 @@ so the exact milestone for future features is not pre-determined.
|
|
|
10
10
|
|
|
11
11
|
Priority features up next:
|
|
12
12
|
- Support containerless formats
|
|
13
|
-
https://github.com/
|
|
13
|
+
https://github.com/shaka-project/shaka-player/issues/2337
|
|
14
14
|
- Preload API
|
|
15
|
-
https://github.com/
|
|
15
|
+
https://github.com/shaka-project/shaka-player/issues/880
|
|
16
16
|
- Codec-switching and order preference
|
|
17
|
-
https://github.com/
|
|
18
|
-
https://github.com/
|
|
17
|
+
https://github.com/shaka-project/shaka-player/issues/1528
|
|
18
|
+
https://github.com/shaka-project/shaka-player/issues/2179
|
|
19
19
|
|
|
20
20
|
Candidate features for future release cycles:
|
|
21
21
|
- HLS interstitial support
|
|
22
|
-
https://github.com/
|
|
22
|
+
https://github.com/shaka-project/shaka-player/issues/3364
|
|
23
23
|
- Support ID3 tags in mp4
|
|
24
|
-
https://github.com/
|
|
24
|
+
https://github.com/shaka-project/shaka-player/issues/3351
|
|
25
25
|
- MSE support for FairPlay
|
|
26
|
-
https://github.com/
|
|
26
|
+
https://github.com/shaka-project/shaka-player/issues/3346
|
|
27
27
|
- Smaller, more modular binary
|
|
28
28
|
- Official TypeScript defs, generated from source
|
|
29
|
-
https://github.com/
|
|
29
|
+
https://github.com/shaka-project/shaka-player/issues/1030
|
|
30
30
|
- Shaka Analytics Component and an integration with BigQuery Analytics
|
|
31
|
-
https://github.com/
|
|
31
|
+
https://github.com/shaka-project/shaka-player/issues/3359
|
|
32
32
|
- Integration with Google Video ML/Cloud AI
|
|
33
33
|
|
|
34
34
|
v3.3 - 2021 Q3 or Q4
|
|
35
35
|
- Background fetch for offline storage
|
|
36
|
-
https://github.com/
|
|
36
|
+
https://github.com/shaka-project/shaka-player/issues/879
|
|
37
37
|
- HLS performance improvements
|
|
38
|
-
https://github.com/
|
|
38
|
+
https://github.com/shaka-project/shaka-player/issues/3363
|
|
39
39
|
|
|
40
40
|
=====
|
|
41
41
|
|
|
42
42
|
v3.2 - 2021 Q3
|
|
43
43
|
- MediaCapabilities to make performance-based decisions
|
|
44
|
-
https://github.com/
|
|
44
|
+
https://github.com/shaka-project/shaka-player/issues/1391
|
|
45
45
|
- Configurable key-system priority
|
|
46
|
-
https://github.com/
|
|
46
|
+
https://github.com/shaka-project/shaka-player/issues/3002
|
|
47
47
|
|
|
48
48
|
v3.1 - 2021 Q2
|
|
49
49
|
- Low-latency live (LL-HLS, LL-DASH)
|
|
50
|
-
https://github.com/
|
|
50
|
+
https://github.com/shaka-project/shaka-player/issues/1525
|
|
51
51
|
- Own CEA parser, use mux.js only for TS
|
|
52
|
-
https://github.com/
|
|
52
|
+
https://github.com/shaka-project/shaka-player/issues/2648
|
|
53
53
|
- Thumbnail tracks
|
|
54
|
-
DASH: https://github.com/
|
|
55
|
-
HLS: https://github.com/
|
|
54
|
+
DASH: https://github.com/shaka-project/shaka-player/issues/559
|
|
55
|
+
HLS: https://github.com/shaka-project/shaka-player/issues/2429
|
|
56
56
|
|
|
57
57
|
v3.0 - 2020 Q2
|
|
58
58
|
- Code health improvements
|
|
@@ -45,6 +45,7 @@ goog.require('shaka.polyfill.PatchedMediaKeysNop');
|
|
|
45
45
|
goog.require('shaka.polyfill.PatchedMediaKeysWebkit');
|
|
46
46
|
goog.require('shaka.polyfill.PiPWebkit');
|
|
47
47
|
goog.require('shaka.polyfill.RandomUUID');
|
|
48
|
+
goog.require('shaka.polyfill.Symbol');
|
|
48
49
|
goog.require('shaka.polyfill.VTTCue');
|
|
49
50
|
goog.require('shaka.polyfill.VideoPlayPromise');
|
|
50
51
|
goog.require('shaka.polyfill.VideoPlaybackQuality');
|
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.abr.SimpleAbrManager');
|
|
8
|
-
goog.require('shaka.test.ManifestGenerator');
|
|
9
|
-
goog.require('shaka.test.Util');
|
|
10
|
-
goog.require('shaka.util.PlayerConfiguration');
|
|
11
|
-
|
|
12
7
|
describe('SimpleAbrManager', () => {
|
|
13
8
|
const sufficientBWMultiplier = 1.06;
|
|
14
9
|
const defaultBandwidthEstimate = 500e3; // 500kbps
|
|
@@ -91,7 +86,7 @@ describe('SimpleAbrManager', () => {
|
|
|
91
86
|
config.defaultBandwidthEstimate = 3e6;
|
|
92
87
|
abrManager.configure(config);
|
|
93
88
|
const chosen = abrManager.chooseVariant();
|
|
94
|
-
expect(chosen.id).toBe(
|
|
89
|
+
expect(chosen.id).toBe(103);
|
|
95
90
|
});
|
|
96
91
|
|
|
97
92
|
it('can handle empty variants', () => {
|
|
@@ -170,7 +165,7 @@ describe('SimpleAbrManager', () => {
|
|
|
170
165
|
it('can handle 0 duration segments', () => {
|
|
171
166
|
// Makes sure bandwidth estimate doesn't get set to NaN
|
|
172
167
|
// when a 0 duration segment is encountered.
|
|
173
|
-
// https://github.com/
|
|
168
|
+
// https://github.com/shaka-project/shaka-player/issues/582
|
|
174
169
|
const bandwidth = 5e5;
|
|
175
170
|
const bytesPerSecond = sufficientBWMultiplier * bandwidth / 8.0;
|
|
176
171
|
|
|
@@ -208,7 +203,7 @@ describe('SimpleAbrManager', () => {
|
|
|
208
203
|
abrManager.segmentDownloaded(1000, bytesPerSecond);
|
|
209
204
|
|
|
210
205
|
// Expect variants 4 to be chosen
|
|
211
|
-
const expectedVariant = variants[
|
|
206
|
+
const expectedVariant = variants[3];
|
|
212
207
|
|
|
213
208
|
expect(switchCallback).toHaveBeenCalledWith(expectedVariant);
|
|
214
209
|
});
|
|
@@ -4,12 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.Player');
|
|
8
|
-
goog.require('shaka.ads.AdManager');
|
|
9
|
-
goog.require('shaka.test.FakeVideo');
|
|
10
|
-
goog.require('shaka.test.Util');
|
|
11
|
-
goog.require('shaka.util.Error');
|
|
12
|
-
|
|
13
7
|
describe('Ad manager', () => {
|
|
14
8
|
/** @type {!shaka.test.FakeVideo} */
|
|
15
9
|
let mockVideo;
|
|
@@ -4,14 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.cast.CastProxy');
|
|
8
|
-
goog.require('shaka.cast.CastSender');
|
|
9
|
-
goog.require('shaka.test.FakeVideo');
|
|
10
|
-
goog.require('shaka.test.Util');
|
|
11
|
-
goog.require('shaka.util.Error');
|
|
12
|
-
goog.require('shaka.util.FakeEvent');
|
|
13
|
-
goog.require('shaka.util.PublicPromise');
|
|
14
|
-
|
|
15
7
|
describe('CastProxy', () => {
|
|
16
8
|
const CastProxy = shaka.cast.CastProxy;
|
|
17
9
|
const FakeEvent = shaka.util.FakeEvent;
|
|
@@ -4,22 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.Player');
|
|
8
|
-
goog.require('shaka.cast.CastReceiver');
|
|
9
|
-
goog.require('shaka.cast.CastUtils');
|
|
10
|
-
goog.require('shaka.log');
|
|
11
|
-
goog.require('shaka.media.DrmEngine');
|
|
12
|
-
goog.require('shaka.media.ManifestParser');
|
|
13
|
-
goog.require('shaka.media.StreamingEngine');
|
|
14
|
-
goog.require('shaka.net.NetworkingEngine');
|
|
15
|
-
goog.require('shaka.test.TestScheme');
|
|
16
|
-
goog.require('shaka.test.UiUtils');
|
|
17
|
-
goog.require('shaka.util.EventManager');
|
|
18
|
-
goog.require('shaka.util.Functional');
|
|
19
|
-
goog.require('shaka.util.Iterables');
|
|
20
|
-
goog.require('shaka.util.Platform');
|
|
21
|
-
goog.require('shaka.util.PublicPromise');
|
|
22
|
-
|
|
23
7
|
// The receiver is only meant to run on the Chromecast, so we have the
|
|
24
8
|
// ability to use modern APIs there that may not be available on all of the
|
|
25
9
|
// browsers our library supports. Because of this, CastReceiver tests will
|
|
@@ -198,8 +182,7 @@ filterDescribe('CastReceiver', castReceiverIntegrationSupport, () => {
|
|
|
198
182
|
// the average length is expected to be lower than the length of the first
|
|
199
183
|
// update message.
|
|
200
184
|
let totalLength = 0;
|
|
201
|
-
for (
|
|
202
|
-
shaka.util.Functional.ignored(_);
|
|
185
|
+
for (let i = 0; i < 50; i++) {
|
|
203
186
|
// eslint-disable-next-line no-await-in-loop
|
|
204
187
|
const message = await waitForUpdateMessage();
|
|
205
188
|
totalLength += message.length;
|
|
@@ -4,14 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.cast.CastReceiver');
|
|
8
|
-
goog.require('shaka.cast.CastUtils');
|
|
9
|
-
goog.require('shaka.test.FakeVideo');
|
|
10
|
-
goog.require('shaka.test.Util');
|
|
11
|
-
goog.require('shaka.util.Error');
|
|
12
|
-
goog.require('shaka.util.Platform');
|
|
13
|
-
goog.require('shaka.util.PublicPromise');
|
|
14
|
-
|
|
15
7
|
// The receiver is only meant to run on the Chromecast, so we have the
|
|
16
8
|
// ability to use modern APIs there that may not be available on all of the
|
|
17
9
|
// browsers our library supports. Because of this, CastReceiver tests will
|
|
@@ -756,7 +748,7 @@ filterDescribe('CastReceiver', castReceiverSupport, () => {
|
|
|
756
748
|
expect(mockGenericMessageBus.broadcast).toHaveBeenCalledTimes(1);
|
|
757
749
|
|
|
758
750
|
// This covers the lack of scrubber in the Google Home app, as described
|
|
759
|
-
// in https://github.com/
|
|
751
|
+
// in https://github.com/shaka-project/shaka-player/issues/2606
|
|
760
752
|
expectMediaInfo('URI A', 1);
|
|
761
753
|
});
|
|
762
754
|
|
|
@@ -4,12 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.cast.CastSender');
|
|
8
|
-
goog.require('shaka.cast.CastUtils');
|
|
9
|
-
goog.require('shaka.test.StatusPromise');
|
|
10
|
-
goog.require('shaka.test.Util');
|
|
11
|
-
goog.require('shaka.util.Error');
|
|
12
|
-
|
|
13
7
|
describe('CastSender', () => {
|
|
14
8
|
const CastSender = shaka.cast.CastSender;
|
|
15
9
|
const CastUtils = shaka.cast.CastUtils;
|