shaka-player 4.6.4 → 4.7.0
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 +1 -0
- package/dist/controls.css +1 -1
- package/dist/controls.css.map +1 -1
- package/dist/deps.js +9 -5
- package/dist/locales.js +29 -29
- package/dist/shaka-player.compiled.d.ts +46 -3
- package/dist/shaka-player.compiled.debug.d.ts +46 -3
- package/dist/shaka-player.compiled.debug.externs.js +45 -0
- package/dist/shaka-player.compiled.debug.js +382 -351
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +45 -0
- package/dist/shaka-player.compiled.js +1135 -1121
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +68 -4
- package/dist/shaka-player.ui.debug.d.ts +68 -4
- package/dist/shaka-player.ui.debug.externs.js +77 -0
- package/dist/shaka-player.ui.debug.js +428 -392
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +77 -0
- package/dist/shaka-player.ui.js +1304 -1290
- package/dist/shaka-player.ui.map +4 -4
- package/externs/mediasession.js +7 -0
- package/externs/shaka/abr_manager.js +8 -0
- package/externs/shaka/manifest.js +3 -3
- package/externs/shaka/player.js +59 -4
- package/lib/abr/simple_abr_manager.js +41 -15
- package/lib/cea/cea708_service.js +1 -1
- package/lib/cea/cea708_window.js +95 -7
- package/lib/dash/dash_parser.js +55 -11
- package/lib/media/adaptation_set_criteria.js +76 -10
- package/lib/media/media_source_engine.js +42 -18
- package/lib/media/segment_reference.js +12 -0
- package/lib/media/streaming_engine.js +55 -3
- package/lib/player.js +92 -6
- package/lib/util/cmsd_manager.js +269 -0
- package/lib/util/content_steering_manager.js +5 -1
- package/lib/util/mime_utils.js +6 -2
- package/lib/util/periods.js +108 -39
- package/lib/util/player_configuration.js +19 -5
- package/lib/util/stream_utils.js +82 -13
- package/package.json +1 -1
- package/ui/audio_language_selection.js +3 -0
- package/ui/controls.js +60 -0
- package/ui/externs/ui.js +12 -1
- package/ui/hidden_fast_forward_button.js +32 -0
- package/ui/hidden_rewind_button.js +32 -0
- package/ui/hidden_seek_button.js +121 -0
- package/ui/less/buttons.less +50 -0
- package/ui/less/containers.less +18 -0
- package/ui/resolution_selection.js +2 -0
- package/ui/ui.js +2 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -75
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -26
- package/.github/ISSUE_TEMPLATE/question.md +0 -26
- package/.github/config.yml +0 -1
- package/.github/workflows/appspot.yaml +0 -39
- package/.github/workflows/build-and-test.yaml +0 -222
- package/.github/workflows/compute-incremental-coverage.py +0 -265
- package/.github/workflows/custom-actions/prep-for-appspot/action.yaml +0 -56
- package/.github/workflows/custom-actions/set-commit-status/action.yaml +0 -37
- package/.github/workflows/deflake.yaml +0 -31
- package/.github/workflows/demo-version-index.yaml +0 -43
- package/.github/workflows/nightly-demo.yaml +0 -42
- package/.github/workflows/release-please.yaml +0 -193
- package/.github/workflows/report-incremental-coverage.yaml +0 -39
- package/.github/workflows/safari-homedir-launcher.sh +0 -18
- package/.github/workflows/selenium-lab-tests.yaml +0 -370
- package/.github/workflows/shaka-bot-commands/command-help.sh +0 -27
- package/.github/workflows/shaka-bot-commands/command-test.sh +0 -56
- package/.github/workflows/shaka-bot-commands/lib.sh +0 -83
- package/.github/workflows/shaka-bot-commands/main.sh +0 -51
- package/.github/workflows/sync-labels.yaml +0 -33
- package/.github/workflows/talk-to-shaka-bot.yaml +0 -29
- package/.github/workflows/update-issues.yaml +0 -31
- package/.github/workflows/update-screenshots.yaml +0 -142
- package/.github/workflows/validate-pr-title.yaml +0 -27
- package/CHANGELOG.md +0 -5774
- package/CODE_OF_CONDUCT.md +0 -93
- package/CONTRIBUTING.md +0 -76
- package/demo/TengwarTelcontar.woff2 +0 -0
- package/demo/app_logo_144.png +0 -0
- package/demo/app_logo_192.png +0 -0
- package/demo/app_logo_256.png +0 -0
- package/demo/app_logo_384.png +0 -0
- package/demo/app_logo_512.png +0 -0
- package/demo/app_manifest.json +0 -29
- package/demo/asset_card.js +0 -410
- package/demo/autoTemplate.txt +0 -61
- package/demo/cast_receiver/idle1.jpg +0 -0
- package/demo/cast_receiver/idle2.jpg +0 -0
- package/demo/cast_receiver/idle3.jpg +0 -0
- package/demo/cast_receiver/index.html +0 -75
- package/demo/cast_receiver/receiver_app.css +0 -111
- package/demo/cast_receiver/receiver_app.js +0 -158
- package/demo/close_button.js +0 -60
- package/demo/common/asset.js +0 -510
- package/demo/common/assets.js +0 -1634
- package/demo/config.js +0 -859
- package/demo/custom.js +0 -907
- package/demo/customWarning.txt +0 -8
- package/demo/demo.less +0 -591
- package/demo/demo_uncompiled.js +0 -11
- package/demo/demo_utils.js +0 -113
- package/demo/favicon.ico +0 -0
- package/demo/front.js +0 -156
- package/demo/icons/README.md +0 -4
- package/demo/icons/baseline-audiotrack-24px.svg +0 -1
- package/demo/icons/baseline-closed_caption-24px.svg +0 -1
- package/demo/icons/baseline-fast_forward-24px.svg +0 -1
- package/demo/icons/baseline-language-24px.svg +0 -1
- package/demo/icons/baseline-live_tv-24px.svg +0 -1
- package/demo/icons/baseline-subtitles-24px.svg +0 -1
- package/demo/icons/baseline-surround_sound-24px.svg +0 -1
- package/demo/icons/custom_ad.svg +0 -1
- package/demo/icons/custom_box_with_text.svg +0 -1
- package/demo/icons/custom_clear_key.svg +0 -1
- package/demo/icons/custom_high_definition.svg +0 -1
- package/demo/icons/custom_playready.svg +0 -1
- package/demo/icons/custom_ultra_high_definition.svg +0 -1
- package/demo/icons/custom_widevine.svg +0 -1
- package/demo/index.html +0 -173
- package/demo/input.js +0 -270
- package/demo/input_container.js +0 -218
- package/demo/load.js +0 -156
- package/demo/main.js +0 -1854
- package/demo/search.js +0 -452
- package/demo/service_worker.js +0 -355
- package/demo/shaka_logo_trans.png +0 -0
- package/demo/tooltip.js +0 -29
- package/demo/visualizer.js +0 -335
- package/demo/visualizer_button.js +0 -84
- package/dist/demo.compiled.debug.js +0 -340
- package/dist/demo.compiled.debug.map +0 -8
- package/dist/demo.compiled.js +0 -340
- package/dist/demo.compiled.map +0 -8
- package/dist/demo.css +0 -6
- package/dist/demo.css.map +0 -1
- package/dist/receiver.compiled.debug.js +0 -187
- package/dist/receiver.compiled.debug.map +0 -8
- package/dist/receiver.compiled.js +0 -187
- package/dist/receiver.compiled.map +0 -8
- package/docs/announcement-list-join-group.png +0 -0
- package/docs/api-mainpage.md +0 -28
- package/docs/design/REDESIGN.md +0 -283
- package/docs/design/architecture.md +0 -13
- package/docs/design/bg-fetch-after.gv +0 -29
- package/docs/design/bg-fetch-after.gv.png +0 -0
- package/docs/design/bg-fetch-before.gv +0 -18
- package/docs/design/bg-fetch-before.gv.png +0 -0
- package/docs/design/bg-fetch.md +0 -134
- package/docs/design/cast.gv +0 -35
- package/docs/design/cast.gv.png +0 -0
- package/docs/design/chromecast.md +0 -151
- package/docs/design/codec_preferences.md +0 -158
- package/docs/design/dash-audio-channels.md +0 -123
- package/docs/design/dash-manifests.md +0 -248
- package/docs/design/dash-timeline.svg +0 -4
- package/docs/design/dataflow.gv +0 -66
- package/docs/design/dataflow.gv.png +0 -0
- package/docs/design/export.md +0 -70
- package/docs/design/fuzzy-locale-matching.md +0 -40
- package/docs/design/gap-jumping.md +0 -151
- package/docs/design/lcevc-architecture.png +0 -0
- package/docs/design/lcevc-demo.png +0 -0
- package/docs/design/lcevc-integration.md +0 -72
- package/docs/design/locale_compatibility.svg +0 -1
- package/docs/design/locales_tree.svg +0 -1
- package/docs/design/localization-design-principles.md +0 -158
- package/docs/design/newdemo.gv +0 -83
- package/docs/design/newdemo.gv.png +0 -0
- package/docs/design/offline.gv +0 -43
- package/docs/design/offline.gv.png +0 -0
- package/docs/design/offline.md +0 -153
- package/docs/design/ownership.gv +0 -76
- package/docs/design/ownership.gv.png +0 -0
- package/docs/design/preload.md +0 -299
- package/docs/design/preload.png +0 -0
- package/docs/design/talking-about-languages.md +0 -46
- package/docs/design/timeline.svg +0 -152
- package/docs/design/ui.md +0 -31
- package/docs/design/ui_player_relationships.svg +0 -1
- package/docs/jsdoc-plugin.js +0 -74
- package/docs/jsdoc-template/README.md +0 -1
- package/docs/jsdoc-template/publish.js +0 -879
- package/docs/jsdoc-template/static/fonts/OpenSans-Bold-webfont.eot +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Bold-webfont.svg +0 -1830
- package/docs/jsdoc-template/static/fonts/OpenSans-Bold-webfont.woff +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
- package/docs/jsdoc-template/static/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Italic-webfont.eot +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Italic-webfont.svg +0 -1830
- package/docs/jsdoc-template/static/fonts/OpenSans-Italic-webfont.woff +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Light-webfont.eot +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Light-webfont.svg +0 -1831
- package/docs/jsdoc-template/static/fonts/OpenSans-Light-webfont.woff +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-LightItalic-webfont.eot +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
- package/docs/jsdoc-template/static/fonts/OpenSans-LightItalic-webfont.woff +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Regular-webfont.eot +0 -0
- package/docs/jsdoc-template/static/fonts/OpenSans-Regular-webfont.svg +0 -1831
- package/docs/jsdoc-template/static/fonts/OpenSans-Regular-webfont.woff +0 -0
- package/docs/jsdoc-template/static/scripts/linenumber.js +0 -44
- package/docs/jsdoc-template/static/scripts/show-widget.js +0 -55
- package/docs/jsdoc-template/static/styles/jsdoc-default.css +0 -438
- package/docs/jsdoc-template/tmpl/augments.tmpl +0 -10
- package/docs/jsdoc-template/tmpl/container.tmpl +0 -205
- package/docs/jsdoc-template/tmpl/details.tmpl +0 -152
- package/docs/jsdoc-template/tmpl/example.tmpl +0 -2
- package/docs/jsdoc-template/tmpl/examples.tmpl +0 -13
- package/docs/jsdoc-template/tmpl/exceptions.tmpl +0 -32
- package/docs/jsdoc-template/tmpl/layout.tmpl +0 -50
- package/docs/jsdoc-template/tmpl/mainpage.tmpl +0 -14
- package/docs/jsdoc-template/tmpl/members.tmpl +0 -47
- package/docs/jsdoc-template/tmpl/method.tmpl +0 -140
- package/docs/jsdoc-template/tmpl/modifies.tmpl +0 -14
- package/docs/jsdoc-template/tmpl/params.tmpl +0 -131
- package/docs/jsdoc-template/tmpl/properties.tmpl +0 -125
- package/docs/jsdoc-template/tmpl/returns.tmpl +0 -19
- package/docs/jsdoc-template/tmpl/source.tmpl +0 -8
- package/docs/jsdoc-template/tmpl/tutorial.tmpl +0 -21
- package/docs/jsdoc-template/tmpl/type.tmpl +0 -7
- package/docs/jsdoc.conf.json +0 -38
- package/docs/shaka-player-logo.png +0 -0
- package/docs/style.md +0 -174
- package/docs/tutorials/a11y.md +0 -64
- package/docs/tutorials/ad_monetization.md +0 -292
- package/docs/tutorials/application-level-redirects.md +0 -94
- package/docs/tutorials/architecture.md +0 -32
- package/docs/tutorials/basic-usage.md +0 -89
- package/docs/tutorials/blob-url.md +0 -15
- package/docs/tutorials/config.md +0 -148
- package/docs/tutorials/debugging.md +0 -189
- package/docs/tutorials/drm-config.md +0 -274
- package/docs/tutorials/errors.md +0 -95
- package/docs/tutorials/fairplay.md +0 -242
- package/docs/tutorials/faq.md +0 -252
- package/docs/tutorials/index.json +0 -29
- package/docs/tutorials/lcevc.md +0 -118
- package/docs/tutorials/license-server-auth.md +0 -248
- package/docs/tutorials/license-wrapping.md +0 -168
- package/docs/tutorials/manifest-parser.md +0 -365
- package/docs/tutorials/network-and-buffering-config.md +0 -119
- package/docs/tutorials/offline.md +0 -683
- package/docs/tutorials/plugins.md +0 -184
- package/docs/tutorials/selenium-grid-config.md +0 -174
- package/docs/tutorials/service-worker.md +0 -106
- package/docs/tutorials/ui-customization.md +0 -288
- package/docs/tutorials/ui.md +0 -232
- package/docs/tutorials/upgrade-manifest.md +0 -281
- package/docs/tutorials/upgrade.md +0 -104
- package/docs/tutorials/welcome.md +0 -108
- package/docs/tutorials/widevine-service-certs.md +0 -45
- package/karma.conf.js +0 -879
- package/maintained-branches.md +0 -15
- package/roadmap.md +0 -186
- package/test/abr/simple_abr_manager_unit.js +0 -398
- package/test/ads/ad_manager_unit.js +0 -260
- package/test/assumptions/uint8_array_unit.js +0 -22
- package/test/cast/cast_proxy_unit.js +0 -736
- package/test/cast/cast_receiver_integration.js +0 -488
- package/test/cast/cast_receiver_unit.js +0 -1183
- package/test/cast/cast_sender_unit.js +0 -973
- package/test/cast/cast_utils_unit.js +0 -311
- package/test/cea/cea608_memory_unit.js +0 -411
- package/test/cea/cea708_service_unit.js +0 -674
- package/test/cea/cea708_window_unit.js +0 -373
- package/test/cea/cea_decoder_unit.js +0 -615
- package/test/cea/dtvcc_packet_builder_unit.js +0 -158
- package/test/cea/dtvcc_packet_unit.js +0 -60
- package/test/cea/mp4_cea_parser_unit.js +0 -127
- package/test/codec_switching/codec_switching_integration.js +0 -182
- package/test/dash/dash_parser_content_protection_unit.js +0 -998
- package/test/dash/dash_parser_integration.js +0 -74
- package/test/dash/dash_parser_live_unit.js +0 -1542
- package/test/dash/dash_parser_manifest_unit.js +0 -3121
- package/test/dash/dash_parser_segment_base_unit.js +0 -421
- package/test/dash/dash_parser_segment_list_unit.js +0 -380
- package/test/dash/dash_parser_segment_template_unit.js +0 -910
- package/test/dash/mpd_utils_unit.js +0 -794
- package/test/demo/demo_unit.js +0 -108
- package/test/deprecate/enforcer_unit.js +0 -74
- package/test/deprecate/version_unit.js +0 -57
- package/test/hls/hls_live_unit.js +0 -1330
- package/test/hls/hls_parser_unit.js +0 -5276
- package/test/hls/manifest_text_parser_unit.js +0 -545
- package/test/media/adaptation_set_criteria_unit.js +0 -806
- package/test/media/adaptation_set_unit.js +0 -229
- package/test/media/buffering_observer_unit.js +0 -143
- package/test/media/closed_caption_parser_unit.js +0 -18
- package/test/media/content_workarounds_unit.js +0 -43
- package/test/media/drm_engine_integration.js +0 -356
- package/test/media/drm_engine_unit.js +0 -2805
- package/test/media/media_source_engine_integration.js +0 -691
- package/test/media/media_source_engine_unit.js +0 -1512
- package/test/media/mp4_segment_index_parser_unit.js +0 -80
- package/test/media/play_rate_controller_unit.js +0 -69
- package/test/media/playhead_unit.js +0 -1394
- package/test/media/presentation_timeline_unit.js +0 -477
- package/test/media/quality_observer_unit.js +0 -138
- package/test/media/region_observer_unit.js +0 -374
- package/test/media/region_timeline_unit.js +0 -139
- package/test/media/segment_index_unit.js +0 -1080
- package/test/media/segment_prefetch_unit.js +0 -243
- package/test/media/segment_reference_unit.js +0 -63
- package/test/media/stall_detector_unit.js +0 -184
- package/test/media/streaming_engine_integration.js +0 -632
- package/test/media/streaming_engine_unit.js +0 -4211
- package/test/media/time_ranges_utils_unit.js +0 -123
- package/test/media/webm_segment_index_parser_unit.js +0 -90
- package/test/mss/mss_parser_content_protection_unit.js +0 -49
- package/test/mss/mss_parser_unit.js +0 -474
- package/test/mss/mss_player_integration.js +0 -124
- package/test/net/data_uri_plugin_unit.js +0 -105
- package/test/net/http_plugin_unit.js +0 -439
- package/test/net/networking_engine_unit.js +0 -1236
- package/test/net/networking_utils_unit.js +0 -37
- package/test/offline/download_progress_estimator_unit.js +0 -90
- package/test/offline/indexeddb_storage_unit.js +0 -192
- package/test/offline/manifest_convert_unit.js +0 -622
- package/test/offline/offline_integration.js +0 -168
- package/test/offline/offline_manifest_parser_unit.js +0 -231
- package/test/offline/offline_scheme_unit.js +0 -154
- package/test/offline/offline_uri_unit.js +0 -59
- package/test/offline/storage_compatibility_unit.js +0 -344
- package/test/offline/storage_integration.js +0 -1858
- package/test/player_external.js +0 -237
- package/test/player_integration.js +0 -1371
- package/test/player_load_graph_integration.js +0 -865
- package/test/player_src_equals_external.js +0 -154
- package/test/player_src_equals_integration.js +0 -527
- package/test/player_unit.js +0 -4434
- package/test/polyfill/media_capabilities_unit.js +0 -277
- package/test/polyfill/patchedmediakeys_apple_unit.js +0 -130
- 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 +0 -30
- package/test/test/assets/3675/dash_1.mpd +0 -30
- package/test/test/assets/3675/dash_2.mpd +0 -30
- package/test/test/assets/3675/dash_3.mpd +0 -30
- package/test/test/assets/3675/dash_4.mpd +0 -30
- package/test/test/assets/3675/dash_5.mpd +0 -26
- package/test/test/assets/3675/init-stream0.m4s +0 -0
- package/test/test/assets/audio-xhe-aac.mp4 +0 -0
- package/test/test/assets/audio.ts +0 -0
- package/test/test/assets/captions-test.ts +0 -0
- package/test/test/assets/cea-init.mp4 +0 -0
- package/test/test/assets/cea-segment.mp4 +0 -0
- package/test/test/assets/chapters.srt +0 -11
- package/test/test/assets/chapters.vtt +0 -10
- package/test/test/assets/chapters2.vtt +0 -10
- package/test/test/assets/dash-aes-128/Fragments(video=0,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/Fragments(video=20000000,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/Fragments(video=40000000,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/Fragments(video=60000000,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/Fragments(video=i,format=mpd-time-csf) +0 -0
- package/test/test/assets/dash-aes-128/dash.mpd +0 -18
- package/test/test/assets/dash-aes-128/license +0 -1
- package/test/test/assets/dash-multi-codec/audio_en_2c_128k_aac.mp4 +0 -0
- package/test/test/assets/dash-multi-codec/audio_es_2c_64k_opus.webm +0 -0
- package/test/test/assets/dash-multi-codec/dash.mpd +0 -32
- package/test/test/assets/dash-multi-codec/video_144p_108k_h264.mp4 +0 -0
- package/test/test/assets/db-dump-v1.json +0 -1
- package/test/test/assets/db-dump-v2-broken.json +0 -1
- package/test/test/assets/db-dump-v2-clean.json +0 -1
- package/test/test/assets/db-dump-v3.json +0 -1
- package/test/test/assets/db-dump-v4-broken.json +0 -1
- package/test/test/assets/db-dump-v5.json +0 -1
- 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/assets/encrypted-sintel-audio-init.mp4 +0 -0
- package/test/test/assets/encrypted-sintel-audio-segment.mp4 +0 -0
- package/test/test/assets/encrypted-sintel-video-init.mp4 +0 -0
- package/test/test/assets/encrypted-sintel-video-segment.mp4 +0 -0
- package/test/test/assets/green-pixel.mp4 +0 -0
- package/test/test/assets/green-pixel.txt +0 -15
- package/test/test/assets/h265-cea-init.mp4 +0 -0
- package/test/test/assets/h265-cea-segment.mp4 +0 -0
- package/test/test/assets/hls-raw-aac/fileSequence0.aac +0 -0
- package/test/test/assets/hls-raw-aac/fileSequence1.aac +0 -0
- package/test/test/assets/hls-raw-aac/fileSequence2.aac +0 -0
- package/test/test/assets/hls-raw-aac/fileSequence3.aac +0 -0
- package/test/test/assets/hls-raw-aac/manifest.m3u8 +0 -4
- package/test/test/assets/hls-raw-aac/stream.m4a.m3u8 +0 -14
- package/test/test/assets/hls-raw-ac3/fileSequence0.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence1.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence2.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence3.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence4.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence5.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence6.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/fileSequence7.ac3 +0 -0
- package/test/test/assets/hls-raw-ac3/prog_index.m3u8 +0 -31
- package/test/test/assets/hls-raw-ec3/fileSequence0.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence1.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence2.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence3.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence4.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence5.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence6.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/fileSequence7.ec3 +0 -0
- package/test/test/assets/hls-raw-ec3/prog_index.m3u8 +0 -31
- package/test/test/assets/hls-raw-mp3/chunklist_w905519204.m3u8 +0 -13
- package/test/test/assets/hls-raw-mp3/media_w905519204_0.mp3 +0 -0
- package/test/test/assets/hls-raw-mp3/media_w905519204_1.mp3 +0 -0
- package/test/test/assets/hls-raw-mp3/media_w905519204_2.mp3 +0 -0
- package/test/test/assets/hls-raw-mp3/media_w905519204_3.mp3 +0 -0
- package/test/test/assets/hls-raw-mp3/playlist.m3u8 +0 -4
- package/test/test/assets/hls-ts-aac/playlist.m3u8 +0 -23
- package/test/test/assets/hls-ts-aac/segment_0.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_1.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_2.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_3.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_4.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_5.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_6.ts +0 -0
- package/test/test/assets/hls-ts-aac/segment_7.ts +0 -0
- package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0000.ts +0 -0
- package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0001.ts +0 -0
- package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0002.ts +0 -0
- package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0003.ts +0 -0
- package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0004.ts +0 -0
- package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0005.ts +0 -0
- package/test/test/assets/hls-ts-ac3/prog_index.m3u8 +0 -19
- package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0000.ts +0 -0
- package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0001.ts +0 -0
- package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0002.ts +0 -0
- package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0003.ts +0 -0
- package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0004.ts +0 -0
- package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0005.ts +0 -0
- package/test/test/assets/hls-ts-ec3/prog_index.m3u8 +0 -19
- package/test/test/assets/hls-ts-h264/fileSequence0.ts +0 -0
- package/test/test/assets/hls-ts-h264/fileSequence1.ts +0 -0
- package/test/test/assets/hls-ts-h264/fileSequence2.ts +0 -0
- package/test/test/assets/hls-ts-h264/fileSequence3.ts +0 -0
- package/test/test/assets/hls-ts-h264/fileSequence4.ts +0 -0
- package/test/test/assets/hls-ts-h264/fileSequence5.ts +0 -0
- package/test/test/assets/hls-ts-h264/prog_index.m3u8 +0 -25
- package/test/test/assets/hls-ts-h265/0.ts +0 -0
- package/test/test/assets/hls-ts-h265/hevc.m3u8 +0 -6
- package/test/test/assets/hls-ts-h265/index.m3u8 +0 -7
- package/test/test/assets/hls-ts-mp3/manifest.m3u8 +0 -13
- package/test/test/assets/hls-ts-mp3/media_w239891843_0.ts +0 -0
- package/test/test/assets/hls-ts-mp3/media_w239891843_1.ts +0 -0
- package/test/test/assets/hls-ts-mp3/media_w239891843_2.ts +0 -0
- package/test/test/assets/hls-ts-mp3/media_w239891843_3.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/chunk.m3u8 +0 -17
- package/test/test/assets/hls-ts-muxed-aac-h264/n_0_0_0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/n_1_0_0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/n_2_0_0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/n_3_0_0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/n_4_0_0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/n_5_0_0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h264/playlist.m3u8 +0 -4
- package/test/test/assets/hls-ts-muxed-aac-h265/0.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h265/1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-aac-h265/media.m3u8 +0 -9
- package/test/test/assets/hls-ts-muxed-ac3-h264/media.m3u8 +0 -24
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00000.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00001.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00002.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00003.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00004.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ac3-h264/s_00005.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0000.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0001.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0002.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0003.ts +0 -0
- package/test/test/assets/hls-ts-muxed-ec3-h264/prog_index.m3u8 +0 -14
- package/test/test/assets/hls-ts-muxed-mp3-h264/index.m3u8 +0 -23
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-1-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-2-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-3-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-4-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-5-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-6-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-7-v1-a1.ts +0 -0
- package/test/test/assets/hls-ts-muxed-mp3-h264/seg-8-v1-a1.ts +0 -0
- package/test/test/assets/id3-metadata.aac +0 -0
- package/test/test/assets/id3-metadata.ts +0 -0
- package/test/test/assets/index-segment.mp4 +0 -0
- package/test/test/assets/index-segment.webm +0 -0
- package/test/test/assets/init-segment.webm +0 -0
- package/test/test/assets/large_file.mpd +0 -4930
- package/test/test/assets/multidrm-audio-init.mp4 +0 -0
- package/test/test/assets/multidrm-audio-segment.mp4 +0 -0
- package/test/test/assets/multidrm-video-init.mp4 +0 -0
- package/test/test/assets/multidrm-video-segment.mp4 +0 -0
- package/test/test/assets/multiple-trun-init.mp4 +0 -0
- package/test/test/assets/multiple-trun-segment.mp4 +0 -0
- package/test/test/assets/sintel-audio-init.mp4 +0 -0
- package/test/test/assets/sintel-audio-segment.mp4 +0 -0
- package/test/test/assets/sintel-video-init.mp4 +0 -0
- package/test/test/assets/sintel-video-segment.mp4 +0 -0
- package/test/test/assets/small.mp4 +0 -0
- package/test/test/assets/text-clip-alt.vtt +0 -63
- package/test/test/assets/text-clip.vtt +0 -63
- package/test/test/assets/thumbnails-sprites.vtt +0 -10
- package/test/test/assets/thumbnails.vtt +0 -10
- package/test/test/assets/ttml-init.mp4 +0 -0
- package/test/test/assets/ttml-segment-multiplemdat.mp4 +0 -0
- package/test/test/assets/ttml-segment.mp4 +0 -0
- package/test/test/assets/video.ts +0 -0
- package/test/test/assets/vtt-init.mp4 +0 -0
- package/test/test/assets/vtt-segment-multi-payload.mp4 +0 -0
- package/test/test/assets/vtt-segment-no-duration.mp4 +0 -0
- package/test/test/assets/vtt-segment-settings.mp4 +0 -0
- package/test/test/assets/vtt-segment.mp4 +0 -0
- package/test/test/boot.js +0 -495
- package/test/test/externs/filters.js +0 -44
- package/test/test/externs/fontfaceonload.js +0 -29
- package/test/test/externs/jasmine.js +0 -670
- package/test/test/externs/karma.js +0 -26
- package/test/test/externs/require.js +0 -21
- package/test/test/externs/sprintf.js +0 -18
- package/test/test/namespace.js +0 -10
- package/test/test/util/canned_idb.js +0 -379
- package/test/test/util/cea_utils.js +0 -60
- package/test/test/util/dash_parser_util.js +0 -329
- package/test/test/util/fake_ad.js +0 -321
- package/test/test/util/fake_ad_manager.js +0 -122
- package/test/test/util/fake_demo_main.js +0 -144
- package/test/test/util/fake_drm_engine.js +0 -103
- package/test/test/util/fake_media_source_engine.js +0 -464
- package/test/test/util/fake_networking_engine.js +0 -381
- package/test/test/util/fake_segment_prefetch.js +0 -84
- package/test/test/util/fake_text_displayer.js +0 -60
- package/test/test/util/id3_generator.js +0 -100
- package/test/test/util/indexeddb_utils.js +0 -124
- package/test/test/util/jasmine_fetch.js +0 -382
- package/test/test/util/layout_tests.js +0 -435
- package/test/test/util/loader.js +0 -88
- package/test/test/util/manifest_generator.js +0 -705
- package/test/test/util/manifest_parser_util.js +0 -101
- package/test/test/util/mss_parser_util.js +0 -119
- package/test/test/util/offline_utils.js +0 -105
- package/test/test/util/simple_fakes.js +0 -535
- package/test/test/util/stream_generator.js +0 -676
- package/test/test/util/streaming_engine_util.js +0 -506
- package/test/test/util/test_scheme.js +0 -778
- package/test/test/util/ttml_utils.js +0 -77
- package/test/test/util/ui_utils.js +0 -183
- package/test/test/util/util.js +0 -374
- package/test/test/util/waiter.js +0 -406
- package/test/text/cue_integration.js +0 -51
- package/test/text/lrc_text_parser_unit.js +0 -98
- package/test/text/mp4_ttml_parser_unit.js +0 -171
- package/test/text/mp4_vtt_parser_unit.js +0 -195
- package/test/text/sbv_text_parser_unit.js +0 -81
- package/test/text/simple_text_displayer_unit.js +0 -468
- package/test/text/srt_text_parser_unit.js +0 -163
- package/test/text/ssa_text_parser_unit.js +0 -382
- package/test/text/text_displayer_layout_unit.js +0 -323
- package/test/text/text_engine_unit.js +0 -500
- package/test/text/text_track_integration.js +0 -186
- package/test/text/ttml_text_parser_unit.js +0 -2176
- package/test/text/ui_text_displayer_unit.js +0 -608
- package/test/text/vtt_text_parser_unit.js +0 -1363
- package/test/text/web_vtt_generator_unit.js +0 -144
- package/test/text/web_vtt_layout_integration.js +0 -524
- package/test/transmuxer/transmuxer_engine_integration.js +0 -69
- package/test/transmuxer/transmuxer_integration.js +0 -443
- package/test/ui/ad_ui_unit.js +0 -369
- package/test/ui/localization_unit.js +0 -508
- package/test/ui/ui_customization_unit.js +0 -208
- package/test/ui/ui_integration.js +0 -669
- package/test/ui/ui_unit.js +0 -902
- package/test/util/abortable_operation_unit.js +0 -624
- package/test/util/array_utils_unit.js +0 -58
- package/test/util/buffer_utils_unit.js +0 -185
- package/test/util/cmcd_manager_unit.js +0 -440
- package/test/util/content_steering_manager_unit.js +0 -427
- package/test/util/data_view_reader_unit.js +0 -254
- package/test/util/ebml_parser_unit.js +0 -297
- package/test/util/event_manager_unit.js +0 -185
- package/test/util/fake_event_target_unit.js +0 -123
- package/test/util/id3_utils_unit.js +0 -168
- package/test/util/iterables_unit.js +0 -68
- package/test/util/language_utils_unit.js +0 -240
- package/test/util/manifest_parser_utils_unit.js +0 -55
- package/test/util/mime_utils_unit.js +0 -64
- package/test/util/mp4_box_parsers_unit.js +0 -246
- package/test/util/mp4_parser_unit.js +0 -373
- package/test/util/multi_map_unit.js +0 -94
- package/test/util/object_utils_unit.js +0 -79
- package/test/util/periods_unit.js +0 -1623
- package/test/util/pssh_unit.js +0 -226
- package/test/util/state_history_unit.js +0 -101
- package/test/util/stream_utils_unit.js +0 -1068
- package/test/util/string_utils_unit.js +0 -166
- package/test/util/text_parser_unit.js +0 -165
- package/test/util/ts_parser_unit.js +0 -77
- package/test/util/xml_utils_unit.js +0 -444
package/externs/mediasession.js
CHANGED
|
@@ -32,6 +32,13 @@ const MediaSession = class {
|
|
|
32
32
|
/** @type {?MediaMetadata} */
|
|
33
33
|
this.metadata;
|
|
34
34
|
}
|
|
35
|
+
|
|
36
|
+
setActionHandler(type, callback) {
|
|
37
|
+
/** @type {string} */
|
|
38
|
+
this.type = type;
|
|
39
|
+
/** @type {!function(!{action: string, seekOffset: ?number})} */
|
|
40
|
+
this.callback = callback;
|
|
41
|
+
}
|
|
35
42
|
};
|
|
36
43
|
|
|
37
44
|
|
|
@@ -121,6 +121,14 @@ shaka.extern.AbrManager = class {
|
|
|
121
121
|
*/
|
|
122
122
|
setMediaElement(mediaElement) {}
|
|
123
123
|
|
|
124
|
+
/**
|
|
125
|
+
* Set CMSD manager.
|
|
126
|
+
*
|
|
127
|
+
* @param {shaka.util.CmsdManager} cmsdManager
|
|
128
|
+
* @exportDoc
|
|
129
|
+
*/
|
|
130
|
+
setCmsdManager(cmsdManager) {}
|
|
131
|
+
|
|
124
132
|
/**
|
|
125
133
|
* Sets the ABR configuration.
|
|
126
134
|
*
|
|
@@ -158,7 +158,7 @@ shaka.extern.InitDataOverride;
|
|
|
158
158
|
* }}
|
|
159
159
|
*
|
|
160
160
|
* @description
|
|
161
|
-
* Maximum and
|
|
161
|
+
* Maximum and minimum latency and playback rate for a manifest. When max
|
|
162
162
|
* latency is reached playbackrate is updated to maxPlaybackRate to decrease
|
|
163
163
|
* latency. When min latency is reached playbackrate is updated to
|
|
164
164
|
* minPlaybackRate to increase latency.
|
|
@@ -169,9 +169,9 @@ shaka.extern.InitDataOverride;
|
|
|
169
169
|
* @property {?number} maxPlaybackRate
|
|
170
170
|
* Maximum playback rate.
|
|
171
171
|
* @property {?number} minLatency
|
|
172
|
-
*
|
|
172
|
+
* Minimum latency in seconds.
|
|
173
173
|
* @property {?number} minPlaybackRate
|
|
174
|
-
*
|
|
174
|
+
* Minimum playback rate.
|
|
175
175
|
*
|
|
176
176
|
* @exportDoc
|
|
177
177
|
*/
|
package/externs/shaka/player.js
CHANGED
|
@@ -855,7 +855,8 @@ shaka.extern.InitDataTransform;
|
|
|
855
855
|
* keySystemsByURI: !Object.<string, string>,
|
|
856
856
|
* manifestPreprocessor: function(!Element),
|
|
857
857
|
* sequenceMode: boolean,
|
|
858
|
-
* enableAudioGroups: boolean
|
|
858
|
+
* enableAudioGroups: boolean,
|
|
859
|
+
* multiTypeVariantsAllowed: boolean
|
|
859
860
|
* }}
|
|
860
861
|
*
|
|
861
862
|
* @property {string} clockSyncUri
|
|
@@ -917,6 +918,16 @@ shaka.extern.InitDataTransform;
|
|
|
917
918
|
* If set, audio streams will be grouped and filtered by their parent
|
|
918
919
|
* adaptation set ID.
|
|
919
920
|
* <i>Defaults to <code>false</code>.</i>
|
|
921
|
+
* @property {boolean} multiTypeVariantsAllowed
|
|
922
|
+
* If true, the manifest parser will create variants that have multiple
|
|
923
|
+
* mimeTypes or codecs for video or for audio if there is no other choice.
|
|
924
|
+
* Meant for content where some periods are only available in one mimeType or
|
|
925
|
+
* codec, and other periods are only available in a different mimeType or
|
|
926
|
+
* codec. For example, a stream with baked-in ads where the audio codec does
|
|
927
|
+
* not match the main content.
|
|
928
|
+
* Might result in undesirable behavior if mediaSource.codecSwitchingStrategy
|
|
929
|
+
* is not set to SMOOTH.
|
|
930
|
+
* Defaults to true if SMOOTH codec switching is supported, RELOAD overwise.
|
|
920
931
|
* @exportDoc
|
|
921
932
|
*/
|
|
922
933
|
shaka.extern.DashManifestConfiguration;
|
|
@@ -1123,7 +1134,9 @@ shaka.extern.ManifestConfiguration;
|
|
|
1123
1134
|
* liveSyncMaxLatency: number,
|
|
1124
1135
|
* liveSyncPlaybackRate: number,
|
|
1125
1136
|
* liveSyncMinLatency: number,
|
|
1126
|
-
* liveSyncMinPlaybackRate: number
|
|
1137
|
+
* liveSyncMinPlaybackRate: number,
|
|
1138
|
+
* allowMediaSourceRecoveries: boolean,
|
|
1139
|
+
* minTimeBetweenRecoveries: number
|
|
1127
1140
|
* }}
|
|
1128
1141
|
*
|
|
1129
1142
|
* @description
|
|
@@ -1253,12 +1266,19 @@ shaka.extern.ManifestConfiguration;
|
|
|
1253
1266
|
* between 1 and 2. Effective only if liveSync is true. Defaults to
|
|
1254
1267
|
* <code>1.1</code>.
|
|
1255
1268
|
* @property {number} liveSyncMinLatency
|
|
1256
|
-
*
|
|
1269
|
+
* Minimum acceptable latency, in seconds. Effective only if liveSync is
|
|
1257
1270
|
* true. Defaults to <code>0</code>.
|
|
1258
1271
|
* @property {number} liveSyncMinPlaybackRate
|
|
1259
|
-
*
|
|
1272
|
+
* Minimum playback rate used for latency chasing. It is recommended to use a
|
|
1260
1273
|
* value between 0 and 1. Effective only if liveSync is true. Defaults to
|
|
1261
1274
|
* <code>1</code>.
|
|
1275
|
+
* @property {boolean} allowMediaSourceRecoveries
|
|
1276
|
+
* Indicate if we should recover from VIDEO_ERROR resetting Media Source.
|
|
1277
|
+
* Defaults to <code>true</code>.
|
|
1278
|
+
* @property {number} minTimeBetweenRecoveries
|
|
1279
|
+
* The minimum time between recoveries when VIDEO_ERROR is reached, in
|
|
1280
|
+
* seconds.
|
|
1281
|
+
* Defaults to <code>5</code>.
|
|
1262
1282
|
* @exportDoc
|
|
1263
1283
|
*/
|
|
1264
1284
|
shaka.extern.StreamingConfiguration;
|
|
@@ -1459,6 +1479,32 @@ shaka.extern.AdvancedAbrConfiguration;
|
|
|
1459
1479
|
*/
|
|
1460
1480
|
shaka.extern.CmcdConfiguration;
|
|
1461
1481
|
|
|
1482
|
+
|
|
1483
|
+
/**
|
|
1484
|
+
* @typedef {{
|
|
1485
|
+
* enabled: boolean,
|
|
1486
|
+
* applyMaximumSuggestedBitrate: boolean,
|
|
1487
|
+
* estimatedThroughputWeightRatio: number
|
|
1488
|
+
* }}
|
|
1489
|
+
*
|
|
1490
|
+
* @description
|
|
1491
|
+
* Common Media Server Data (CMSD) configuration.
|
|
1492
|
+
*
|
|
1493
|
+
* @property {boolean} enabled
|
|
1494
|
+
* If <code>true</code>, enables reading CMSD data in media requests.
|
|
1495
|
+
* Defaults to <code>true</code>.
|
|
1496
|
+
* @property {boolean} applyMaximumSuggestedBitrate
|
|
1497
|
+
* If true, we must apply the maximum suggested bitrate. If false, we ignore
|
|
1498
|
+
* this.
|
|
1499
|
+
* Defaults to <code>true</code>.
|
|
1500
|
+
* @property {number} estimatedThroughputWeightRatio
|
|
1501
|
+
* How much the estimatedThroughput of the CMSD data should be weighted
|
|
1502
|
+
* against the default estimate, between 0 and 1.
|
|
1503
|
+
* Defaults to <code>0.5</code>.
|
|
1504
|
+
* @exportDoc
|
|
1505
|
+
*/
|
|
1506
|
+
shaka.extern.CmsdConfiguration;
|
|
1507
|
+
|
|
1462
1508
|
/**
|
|
1463
1509
|
* @typedef {{
|
|
1464
1510
|
* enabled: boolean,
|
|
@@ -1554,6 +1600,7 @@ shaka.extern.OfflineConfiguration;
|
|
|
1554
1600
|
* abrFactory: shaka.extern.AbrManager.Factory,
|
|
1555
1601
|
* abr: shaka.extern.AbrConfiguration,
|
|
1556
1602
|
* cmcd: shaka.extern.CmcdConfiguration,
|
|
1603
|
+
* cmsd: shaka.extern.CmsdConfiguration,
|
|
1557
1604
|
* lcevc: shaka.extern.LcevcConfiguration,
|
|
1558
1605
|
* offline: shaka.extern.OfflineConfiguration,
|
|
1559
1606
|
* preferredAudioLanguage: string,
|
|
@@ -1566,8 +1613,10 @@ shaka.extern.OfflineConfiguration;
|
|
|
1566
1613
|
* preferredAudioChannelCount: number,
|
|
1567
1614
|
* preferredVideoHdrLevel: string,
|
|
1568
1615
|
* preferredVideoLayout: string,
|
|
1616
|
+
* preferredVideoLabel: string,
|
|
1569
1617
|
* preferredDecodingAttributes: !Array.<string>,
|
|
1570
1618
|
* preferForcedSubs: boolean,
|
|
1619
|
+
* preferSpatialAudio: boolean,
|
|
1571
1620
|
* restrictions: shaka.extern.Restrictions,
|
|
1572
1621
|
* playRangeStart: number,
|
|
1573
1622
|
* playRangeEnd: number,
|
|
@@ -1592,6 +1641,8 @@ shaka.extern.OfflineConfiguration;
|
|
|
1592
1641
|
* ABR configuration and settings.
|
|
1593
1642
|
* @property {shaka.extern.CmcdConfiguration} cmcd
|
|
1594
1643
|
* CMCD configuration and settings. (Common Media Client Data)
|
|
1644
|
+
* @property {shaka.extern.CmsdConfiguration} cmsd
|
|
1645
|
+
* CMSD configuration and settings. (Common Media Server Data)
|
|
1595
1646
|
* @property {shaka.extern.LcevcConfiguration} lcevc
|
|
1596
1647
|
* MPEG-5 LCEVC configuration and settings.
|
|
1597
1648
|
* (Low Complexity Enhancement Video Codec)
|
|
@@ -1603,6 +1654,8 @@ shaka.extern.OfflineConfiguration;
|
|
|
1603
1654
|
* Changing this during playback will not affect the current playback.
|
|
1604
1655
|
* @property {string} preferredAudioLabel
|
|
1605
1656
|
* The preferred label to use for audio tracks
|
|
1657
|
+
* @property {string} preferredVideoLabel
|
|
1658
|
+
* The preferred label to use for video tracks
|
|
1606
1659
|
* @property {string} preferredTextLanguage
|
|
1607
1660
|
* The preferred language to use for text tracks. If a matching text track
|
|
1608
1661
|
* is found, and the selected audio and text tracks have different languages,
|
|
@@ -1640,6 +1693,8 @@ shaka.extern.OfflineConfiguration;
|
|
|
1640
1693
|
* If the content has no forced captions and the value is true,
|
|
1641
1694
|
* no text track is chosen.
|
|
1642
1695
|
* Changing this during playback will not affect the current playback.
|
|
1696
|
+
* @property {boolean} preferSpatialAudio
|
|
1697
|
+
* If true, a spatial audio track is preferred. Defaults to false.
|
|
1643
1698
|
* @property {shaka.extern.Restrictions} restrictions
|
|
1644
1699
|
* The application restrictions to apply to the tracks. These are "hard"
|
|
1645
1700
|
* restrictions. Any track that fails to meet these restrictions will not
|
|
@@ -13,6 +13,8 @@ goog.require('shaka.log');
|
|
|
13
13
|
goog.require('shaka.util.StreamUtils');
|
|
14
14
|
goog.require('shaka.util.Timer');
|
|
15
15
|
|
|
16
|
+
goog.requireType('shaka.util.CmsdManager');
|
|
17
|
+
|
|
16
18
|
|
|
17
19
|
/**
|
|
18
20
|
* @summary
|
|
@@ -112,6 +114,9 @@ shaka.abr.SimpleAbrManager = class {
|
|
|
112
114
|
}
|
|
113
115
|
}
|
|
114
116
|
});
|
|
117
|
+
|
|
118
|
+
/** @private {?shaka.util.CmsdManager} */
|
|
119
|
+
this.cmsdManager_ = null;
|
|
115
120
|
}
|
|
116
121
|
|
|
117
122
|
|
|
@@ -134,6 +139,8 @@ shaka.abr.SimpleAbrManager = class {
|
|
|
134
139
|
|
|
135
140
|
this.resizeObserverTimer_.stop();
|
|
136
141
|
|
|
142
|
+
this.cmsdManager_ = null;
|
|
143
|
+
|
|
137
144
|
// Don't reset |startupComplete_|: if we've left the startup interval, we
|
|
138
145
|
// can start using bandwidth estimates right away after init() is called.
|
|
139
146
|
}
|
|
@@ -171,8 +178,6 @@ shaka.abr.SimpleAbrManager = class {
|
|
|
171
178
|
* @export
|
|
172
179
|
*/
|
|
173
180
|
chooseVariant(preferFastSwitching = false) {
|
|
174
|
-
const SimpleAbrManager = shaka.abr.SimpleAbrManager;
|
|
175
|
-
|
|
176
181
|
let maxHeight = Infinity;
|
|
177
182
|
let maxWidth = Infinity;
|
|
178
183
|
|
|
@@ -208,12 +213,12 @@ shaka.abr.SimpleAbrManager = class {
|
|
|
208
213
|
}
|
|
209
214
|
|
|
210
215
|
// Get sorted Variants.
|
|
211
|
-
let sortedVariants =
|
|
216
|
+
let sortedVariants = this.filterAndSortVariants_(
|
|
212
217
|
this.config_.restrictions, variants,
|
|
213
218
|
/* maxHeight= */ Infinity, /* maxWidth= */ Infinity);
|
|
214
219
|
|
|
215
220
|
if (maxHeight != Infinity || maxWidth != Infinity) {
|
|
216
|
-
const resolutions =
|
|
221
|
+
const resolutions = this.getResolutionList_(sortedVariants);
|
|
217
222
|
for (const resolution of resolutions) {
|
|
218
223
|
if (resolution.height >= maxHeight && resolution.width >= maxWidth) {
|
|
219
224
|
maxHeight = resolution.height;
|
|
@@ -222,13 +227,11 @@ shaka.abr.SimpleAbrManager = class {
|
|
|
222
227
|
}
|
|
223
228
|
}
|
|
224
229
|
|
|
225
|
-
sortedVariants =
|
|
230
|
+
sortedVariants = this.filterAndSortVariants_(
|
|
226
231
|
this.config_.restrictions, variants, maxHeight, maxWidth);
|
|
227
232
|
}
|
|
228
233
|
|
|
229
|
-
const
|
|
230
|
-
const currentBandwidth = this.bandwidthEstimator_.getBandwidthEstimate(
|
|
231
|
-
defaultBandwidthEstimate);
|
|
234
|
+
const currentBandwidth = this.getBandwidthEstimate();
|
|
232
235
|
|
|
233
236
|
if (variants.length && !sortedVariants.length) {
|
|
234
237
|
// If we couldn't meet the ABR restrictions, we should still play
|
|
@@ -238,7 +241,7 @@ shaka.abr.SimpleAbrManager = class {
|
|
|
238
241
|
// restrictions and keep just the first (lowest-bandwidth) one.
|
|
239
242
|
shaka.log.warning('No variants met the ABR restrictions. ' +
|
|
240
243
|
'Choosing a variant by lowest bandwidth.');
|
|
241
|
-
sortedVariants =
|
|
244
|
+
sortedVariants = this.filterAndSortVariants_(
|
|
242
245
|
/* restrictions= */ null, variants,
|
|
243
246
|
/* maxHeight= */ Infinity, /* maxWidth= */ Infinity);
|
|
244
247
|
sortedVariants = [sortedVariants[0]];
|
|
@@ -323,8 +326,12 @@ shaka.abr.SimpleAbrManager = class {
|
|
|
323
326
|
*/
|
|
324
327
|
getBandwidthEstimate() {
|
|
325
328
|
const defaultBandwidthEstimate = this.getDefaultBandwidth_();
|
|
326
|
-
|
|
329
|
+
const bandwidthEstimate = this.bandwidthEstimator_.getBandwidthEstimate(
|
|
327
330
|
defaultBandwidthEstimate);
|
|
331
|
+
if (this.cmsdManager_) {
|
|
332
|
+
return this.cmsdManager_.getBandwidthEstimate(bandwidthEstimate);
|
|
333
|
+
}
|
|
334
|
+
return bandwidthEstimate;
|
|
328
335
|
}
|
|
329
336
|
|
|
330
337
|
|
|
@@ -368,6 +375,15 @@ shaka.abr.SimpleAbrManager = class {
|
|
|
368
375
|
}
|
|
369
376
|
|
|
370
377
|
|
|
378
|
+
/**
|
|
379
|
+
* @override
|
|
380
|
+
* @export
|
|
381
|
+
*/
|
|
382
|
+
setCmsdManager(cmsdManager) {
|
|
383
|
+
this.cmsdManager_ = cmsdManager;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
|
|
371
387
|
/**
|
|
372
388
|
* @override
|
|
373
389
|
* @export
|
|
@@ -408,9 +424,7 @@ shaka.abr.SimpleAbrManager = class {
|
|
|
408
424
|
}
|
|
409
425
|
|
|
410
426
|
const chosenVariant = this.chooseVariant();
|
|
411
|
-
const
|
|
412
|
-
const bandwidthEstimate = this.bandwidthEstimator_.getBandwidthEstimate(
|
|
413
|
-
defaultBandwidthEstimate);
|
|
427
|
+
const bandwidthEstimate = this.getBandwidthEstimate();
|
|
414
428
|
const currentBandwidthKbps = Math.round(bandwidthEstimate / 1000.0);
|
|
415
429
|
|
|
416
430
|
if (chosenVariant) {
|
|
@@ -452,7 +466,19 @@ shaka.abr.SimpleAbrManager = class {
|
|
|
452
466
|
* |restrictions| and sorted in ascending order of bandwidth.
|
|
453
467
|
* @private
|
|
454
468
|
*/
|
|
455
|
-
|
|
469
|
+
filterAndSortVariants_(restrictions, variants, maxHeight, maxWidth) {
|
|
470
|
+
if (this.cmsdManager_) {
|
|
471
|
+
const maxBitrate = this.cmsdManager_.getMaxBitrate();
|
|
472
|
+
if (maxBitrate) {
|
|
473
|
+
variants = variants.filter((variant) => {
|
|
474
|
+
if (!variant.bandwidth || !maxBitrate) {
|
|
475
|
+
return true;
|
|
476
|
+
}
|
|
477
|
+
return variant.bandwidth <= maxBitrate;
|
|
478
|
+
});
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
|
|
456
482
|
if (restrictions) {
|
|
457
483
|
variants = variants.filter((variant) => {
|
|
458
484
|
// This was already checked in another scope, but the compiler doesn't
|
|
@@ -475,7 +501,7 @@ shaka.abr.SimpleAbrManager = class {
|
|
|
475
501
|
* @return {!Array.<{height: number, width: number}>}
|
|
476
502
|
* @private
|
|
477
503
|
*/
|
|
478
|
-
|
|
504
|
+
getResolutionList_(variants) {
|
|
479
505
|
const resolutions = [];
|
|
480
506
|
for (const variant of variants) {
|
|
481
507
|
const video = variant.video;
|
|
@@ -568,7 +568,7 @@ shaka.cea.Cea708Service = class {
|
|
|
568
568
|
// Create the window if it doesn't exist.
|
|
569
569
|
const windowAlreadyExists = this.windows_[windowNum] !== null;
|
|
570
570
|
if (!windowAlreadyExists) {
|
|
571
|
-
const window = new shaka.cea.Cea708Window(windowNum);
|
|
571
|
+
const window = new shaka.cea.Cea708Window(windowNum, this.serviceNumber_);
|
|
572
572
|
window.setStartTime(pts);
|
|
573
573
|
this.windows_[windowNum] = window;
|
|
574
574
|
}
|
package/lib/cea/cea708_window.js
CHANGED
|
@@ -9,7 +9,7 @@ goog.provide('shaka.cea.Cea708Window');
|
|
|
9
9
|
goog.require('shaka.cea.CeaUtils');
|
|
10
10
|
goog.require('shaka.cea.CeaUtils.StyledChar');
|
|
11
11
|
goog.require('shaka.text.Cue');
|
|
12
|
-
goog.require('shaka.
|
|
12
|
+
goog.require('shaka.text.CueRegion');
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
/**
|
|
@@ -19,7 +19,13 @@ shaka.cea.Cea708Window = class {
|
|
|
19
19
|
/**
|
|
20
20
|
* @param {number} windowNum
|
|
21
21
|
*/
|
|
22
|
-
constructor(windowNum) {
|
|
22
|
+
constructor(windowNum, parentService) {
|
|
23
|
+
/**
|
|
24
|
+
* Number for the parent service (1 - 63).
|
|
25
|
+
* @private {number}
|
|
26
|
+
*/
|
|
27
|
+
this.parentService_ = parentService;
|
|
28
|
+
|
|
23
29
|
/**
|
|
24
30
|
* A number from 0 - 7 indicating the window number in the
|
|
25
31
|
* service that owns this window.
|
|
@@ -132,11 +138,6 @@ shaka.cea.Cea708Window = class {
|
|
|
132
138
|
this.backgroundColor_ = shaka.cea.CeaUtils.DEFAULT_BG_COLOR;
|
|
133
139
|
|
|
134
140
|
this.resetMemory();
|
|
135
|
-
|
|
136
|
-
// TODO Support window positioning by mapping them to Regions.
|
|
137
|
-
// https://dvcs.w3.org/hg/text-tracks/raw-file/default/608toVTT/608toVTT.html#positioning-in-cea-708
|
|
138
|
-
shaka.util.Functional.ignored(this.verticalAnchor_, this.relativeToggle_,
|
|
139
|
-
this.horizontalAnchor_, this.anchorId_, this.windowNum_);
|
|
140
141
|
}
|
|
141
142
|
|
|
142
143
|
/**
|
|
@@ -306,6 +307,8 @@ shaka.cea.Cea708Window = class {
|
|
|
306
307
|
topLevelCue.textAlign = shaka.text.Cue.textAlign.CENTER;
|
|
307
308
|
}
|
|
308
309
|
|
|
310
|
+
this.adjustRegion_(topLevelCue.region);
|
|
311
|
+
|
|
309
312
|
const caption = shaka.cea.CeaUtils.getParsedCaption(
|
|
310
313
|
topLevelCue, stream, this.memory_, this.startTime_, endTime);
|
|
311
314
|
if (caption) {
|
|
@@ -398,6 +401,75 @@ shaka.cea.Cea708Window = class {
|
|
|
398
401
|
setStartTime(pts) {
|
|
399
402
|
this.startTime_ = pts;
|
|
400
403
|
}
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* Support window positioning by mapping anchor related values to CueRegion.
|
|
407
|
+
* https://dvcs.w3.org/hg/text-tracks/raw-file/default/608toVTT/608toVTT.html#positioning-in-cea-708
|
|
408
|
+
* @param {shaka.text.CueRegion} region
|
|
409
|
+
* @private
|
|
410
|
+
*/
|
|
411
|
+
adjustRegion_(region) {
|
|
412
|
+
if (this.parentService_) {
|
|
413
|
+
region.id += 'svc' + this.parentService_;
|
|
414
|
+
}
|
|
415
|
+
region.id += 'win' + this.windowNum_;
|
|
416
|
+
|
|
417
|
+
region.height = this.rowCount_;
|
|
418
|
+
region.width = this.colCount_;
|
|
419
|
+
region.heightUnits = shaka.text.CueRegion.units.LINES;
|
|
420
|
+
region.widthUnits = shaka.text.CueRegion.units.LINES;
|
|
421
|
+
|
|
422
|
+
region.viewportAnchorX = this.horizontalAnchor_;
|
|
423
|
+
region.viewportAnchorY = this.verticalAnchor_;
|
|
424
|
+
// WebVTT's region viewport anchors are technically always in percentages.
|
|
425
|
+
// However, we don't know the aspect ratio of the video at this point,
|
|
426
|
+
// which determines how we interpret the horizontal anchor.
|
|
427
|
+
// So, we expose the additonal flag to reflect whether these viewport anchor
|
|
428
|
+
// values can be used be used as is or should be converted to percentages.
|
|
429
|
+
region.viewportAnchorUnits = this.relativeToggle_ ?
|
|
430
|
+
shaka.text.CueRegion.units.PERCENTAGE : shaka.text.CueRegion.units.LINES;
|
|
431
|
+
|
|
432
|
+
const AnchorId = shaka.cea.Cea708Window.AnchorId;
|
|
433
|
+
|
|
434
|
+
switch (this.anchorId_) {
|
|
435
|
+
case AnchorId.UPPER_LEFT:
|
|
436
|
+
region.regionAnchorX = 0;
|
|
437
|
+
region.regionAnchorY = 0;
|
|
438
|
+
break;
|
|
439
|
+
case AnchorId.UPPER_CENTER:
|
|
440
|
+
region.regionAnchorX = 50;
|
|
441
|
+
region.regionAnchorY = 0;
|
|
442
|
+
break;
|
|
443
|
+
case AnchorId.UPPER_RIGHT:
|
|
444
|
+
region.regionAnchorX = 100;
|
|
445
|
+
region.regionAnchorY = 0;
|
|
446
|
+
break;
|
|
447
|
+
case AnchorId.MIDDLE_LEFT:
|
|
448
|
+
region.regionAnchorX = 0;
|
|
449
|
+
region.regionAnchorY = 50;
|
|
450
|
+
break;
|
|
451
|
+
case AnchorId.MIDDLE_CENTER:
|
|
452
|
+
region.regionAnchorX = 50;
|
|
453
|
+
region.regionAnchorY = 50;
|
|
454
|
+
break;
|
|
455
|
+
case AnchorId.MIDDLE_RIGHT:
|
|
456
|
+
region.regionAnchorX = 100;
|
|
457
|
+
region.regionAnchorY = 50;
|
|
458
|
+
break;
|
|
459
|
+
case AnchorId.LOWER_LEFT:
|
|
460
|
+
region.regionAnchorX = 0;
|
|
461
|
+
region.regionAnchorY = 100;
|
|
462
|
+
break;
|
|
463
|
+
case AnchorId.LOWER_CENTER:
|
|
464
|
+
region.regionAnchorX = 50;
|
|
465
|
+
region.regionAnchorY = 100;
|
|
466
|
+
break;
|
|
467
|
+
case AnchorId.LOWER_RIGHT:
|
|
468
|
+
region.regionAnchorX = 100;
|
|
469
|
+
region.regionAnchorY = 100;
|
|
470
|
+
break;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
401
473
|
};
|
|
402
474
|
|
|
403
475
|
/**
|
|
@@ -411,6 +483,22 @@ shaka.cea.Cea708Window.TextJustification = {
|
|
|
411
483
|
FULL: 3,
|
|
412
484
|
};
|
|
413
485
|
|
|
486
|
+
/**
|
|
487
|
+
* Possible AnchorId values.
|
|
488
|
+
* @const @enum {number}
|
|
489
|
+
*/
|
|
490
|
+
shaka.cea.Cea708Window.AnchorId = {
|
|
491
|
+
UPPER_LEFT: 0,
|
|
492
|
+
UPPER_CENTER: 1,
|
|
493
|
+
UPPER_RIGHT: 2,
|
|
494
|
+
MIDDLE_LEFT: 3,
|
|
495
|
+
MIDDLE_CENTER: 4,
|
|
496
|
+
MIDDLE_RIGHT: 5,
|
|
497
|
+
LOWER_LEFT: 6,
|
|
498
|
+
LOWER_CENTER: 7,
|
|
499
|
+
LOWER_RIGHT: 8,
|
|
500
|
+
};
|
|
501
|
+
|
|
414
502
|
/**
|
|
415
503
|
* Can be indexed 0-31 for 4:3 format, and 0-41 for 16:9 formats.
|
|
416
504
|
* Thus the absolute maximum is 42 columns for the 16:9 format.
|
package/lib/dash/dash_parser.js
CHANGED
|
@@ -14,6 +14,7 @@ goog.require('shaka.dash.SegmentBase');
|
|
|
14
14
|
goog.require('shaka.dash.SegmentList');
|
|
15
15
|
goog.require('shaka.dash.SegmentTemplate');
|
|
16
16
|
goog.require('shaka.log');
|
|
17
|
+
goog.require('shaka.media.Capabilities');
|
|
17
18
|
goog.require('shaka.media.ManifestParser');
|
|
18
19
|
goog.require('shaka.media.PresentationTimeline');
|
|
19
20
|
goog.require('shaka.media.SegmentIndex');
|
|
@@ -134,6 +135,10 @@ shaka.dash.DashParser = class {
|
|
|
134
135
|
if (this.contentSteeringManager_) {
|
|
135
136
|
this.contentSteeringManager_.configure(this.config_);
|
|
136
137
|
}
|
|
138
|
+
|
|
139
|
+
this.periodCombiner_.setAllowMultiTypeVariants(
|
|
140
|
+
this.config_.dash.multiTypeVariantsAllowed &&
|
|
141
|
+
shaka.media.Capabilities.isChangeTypeSupported());
|
|
137
142
|
}
|
|
138
143
|
|
|
139
144
|
/**
|
|
@@ -271,8 +276,16 @@ shaka.dash.DashParser = class {
|
|
|
271
276
|
async requestManifest_() {
|
|
272
277
|
const requestType = shaka.net.NetworkingEngine.RequestType.MANIFEST;
|
|
273
278
|
const type = shaka.net.NetworkingEngine.AdvancedRequestType.MPD;
|
|
279
|
+
let manifestUris = this.manifestUris_;
|
|
280
|
+
if (this.manifestUris_.length > 1 && this.contentSteeringManager_) {
|
|
281
|
+
const locations = this.contentSteeringManager_.getLocations(
|
|
282
|
+
'Location', /* ignoreBaseUrls= */ true);
|
|
283
|
+
if (locations.length) {
|
|
284
|
+
manifestUris = locations;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
274
287
|
const request = shaka.net.NetworkingEngine.makeRequest(
|
|
275
|
-
|
|
288
|
+
manifestUris, this.config_.retryParameters);
|
|
276
289
|
const startTime = Date.now();
|
|
277
290
|
|
|
278
291
|
const response = await this.makeNetworkRequest_(
|
|
@@ -347,7 +360,6 @@ shaka.dash.DashParser = class {
|
|
|
347
360
|
* @private
|
|
348
361
|
*/
|
|
349
362
|
async processManifest_(mpd, finalManifestUri) {
|
|
350
|
-
const Functional = shaka.util.Functional;
|
|
351
363
|
const XmlUtils = shaka.util.XmlUtils;
|
|
352
364
|
|
|
353
365
|
const manifestPreprocessor = this.config_.dash.manifestPreprocessor;
|
|
@@ -355,19 +367,47 @@ shaka.dash.DashParser = class {
|
|
|
355
367
|
manifestPreprocessor(mpd);
|
|
356
368
|
}
|
|
357
369
|
|
|
370
|
+
if (this.contentSteeringManager_) {
|
|
371
|
+
this.contentSteeringManager_.clearPreviousLocations();
|
|
372
|
+
}
|
|
373
|
+
|
|
358
374
|
// Get any Location elements. This will update the manifest location and
|
|
359
375
|
// the base URI.
|
|
360
376
|
/** @type {!Array.<string>} */
|
|
361
377
|
let manifestBaseUris = [finalManifestUri];
|
|
362
378
|
/** @type {!Array.<string>} */
|
|
363
|
-
const locations =
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
379
|
+
const locations = [];
|
|
380
|
+
/** @type {!Map.<string, string>} */
|
|
381
|
+
const locationsMapping = new Map();
|
|
382
|
+
const locationsObjs = XmlUtils.findChildren(mpd, 'Location');
|
|
383
|
+
for (const locationsObj of locationsObjs) {
|
|
384
|
+
const serviceLocation = locationsObj.getAttribute('serviceLocation');
|
|
385
|
+
const uri = XmlUtils.getContents(locationsObj);
|
|
386
|
+
if (!uri) {
|
|
387
|
+
continue;
|
|
388
|
+
}
|
|
389
|
+
const finalUri = shaka.util.ManifestParserUtils.resolveUris(
|
|
390
|
+
manifestBaseUris, [uri])[0];
|
|
391
|
+
if (serviceLocation) {
|
|
392
|
+
if (this.contentSteeringManager_) {
|
|
393
|
+
this.contentSteeringManager_.addLocation(
|
|
394
|
+
'Location', serviceLocation, finalUri);
|
|
395
|
+
} else {
|
|
396
|
+
locationsMapping.set(serviceLocation, finalUri);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
locations.push(finalUri);
|
|
400
|
+
}
|
|
401
|
+
if (this.contentSteeringManager_) {
|
|
402
|
+
const steeringlocations = this.contentSteeringManager_.getLocations(
|
|
403
|
+
'Location', /* ignoreBaseUrls= */ true);
|
|
404
|
+
if (steeringlocations.length > 0) {
|
|
405
|
+
this.manifestUris_ = steeringlocations;
|
|
406
|
+
manifestBaseUris = steeringlocations;
|
|
407
|
+
}
|
|
408
|
+
} else if (locations.length) {
|
|
409
|
+
this.manifestUris_ = locations;
|
|
410
|
+
manifestBaseUris = locations;
|
|
371
411
|
}
|
|
372
412
|
|
|
373
413
|
let contentSteeringPromise = Promise.resolve();
|
|
@@ -400,13 +440,17 @@ shaka.dash.DashParser = class {
|
|
|
400
440
|
this.contentSteeringManager_.setBaseUris(manifestBaseUris);
|
|
401
441
|
this.contentSteeringManager_.setDefaultPathwayId(defaultPathwayId);
|
|
402
442
|
}
|
|
443
|
+
for (const serviceLocation of locationsMapping.keys()) {
|
|
444
|
+
const uri = locationsMapping.get(serviceLocation);
|
|
445
|
+
this.contentSteeringManager_.addLocation(
|
|
446
|
+
'Location', serviceLocation, uri);
|
|
447
|
+
}
|
|
403
448
|
}
|
|
404
449
|
|
|
405
450
|
const uriObjs = XmlUtils.findChildren(mpd, 'BaseURL');
|
|
406
451
|
let calculatedBaseUris;
|
|
407
452
|
let someLocationValid = false;
|
|
408
453
|
if (this.contentSteeringManager_) {
|
|
409
|
-
this.contentSteeringManager_.clearPreviousLocations();
|
|
410
454
|
for (const uriObj of uriObjs) {
|
|
411
455
|
const serviceLocation = uriObj.getAttribute('serviceLocation');
|
|
412
456
|
const uri = XmlUtils.getContents(uriObj);
|