shaka-player 3.3.2 → 4.0.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/.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 +129 -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 +37 -0
- package/.github/workflows/nightly-demo.yaml +42 -0
- package/.github/workflows/release-please.yaml +168 -0
- package/.github/workflows/safari-homedir-launcher.sh +18 -0
- package/.github/workflows/selenium-lab-tests.yaml +92 -0
- package/.github/workflows/sync-labels.yaml +33 -0
- package/.github/workflows/update-issues.yaml +29 -0
- package/.github/workflows/validate-pr-title.yaml +35 -0
- package/AUTHORS +3 -0
- package/CHANGELOG.md +1866 -1675
- package/CONTRIBUTING.md +2 -2
- package/CONTRIBUTORS +3 -0
- package/README.md +16 -13
- 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 +28 -0
- package/app-engine/demo-version-index/generate.py +164 -0
- package/app-engine/demo-version-index/main.py +11 -0
- package/app-engine/demo-version-index/requirements.txt +5 -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 +3 -3
- package/build/checkversion.py +1 -1
- package/build/compiler.py +1 -1
- package/build/conformance.textproto +13 -0
- 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 +161 -0
- package/build/shakaBuildHelpers.py +4 -29
- package/build/test.py +94 -29
- package/build/types/core +0 -1
- package/build/types/polyfill +1 -3
- 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/asset.js +17 -1
- package/demo/common/assets.js +31 -0
- package/demo/common/message_ids.js +6 -3
- package/demo/config.js +10 -12
- package/demo/custom.js +39 -1
- package/demo/customWarning.txt +2 -2
- package/demo/demo.less +29 -18
- package/demo/demo_uncompiled.js +1 -13
- package/demo/demo_utils.js +0 -1
- package/demo/index.html +1 -1
- package/demo/locales/en.json +6 -3
- package/demo/locales/source.json +22 -10
- package/demo/main.js +12 -9
- package/demo/search.js +2 -1
- package/dist/controls.css +3 -3
- package/dist/controls.css.map +1 -1
- package/dist/demo.compiled.debug.js +236 -232
- package/dist/demo.compiled.debug.map +4 -4
- package/dist/demo.compiled.js +236 -232
- package/dist/demo.compiled.map +4 -4
- package/dist/demo.css +1 -1
- package/dist/demo.css.map +1 -1
- package/dist/deps.js +229 -226
- package/dist/locales.js +34 -32
- package/dist/receiver.compiled.debug.js +75 -73
- package/dist/receiver.compiled.debug.map +4 -4
- package/dist/receiver.compiled.js +75 -73
- package/dist/receiver.compiled.map +4 -4
- package/dist/shaka-player.compiled.d.ts +321 -314
- package/dist/shaka-player.compiled.debug.d.ts +321 -314
- package/dist/shaka-player.compiled.debug.externs.js +140 -129
- package/dist/shaka-player.compiled.debug.js +527 -592
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +140 -129
- package/dist/shaka-player.compiled.js +836 -860
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +367 -358
- package/dist/shaka-player.ui.debug.d.ts +367 -358
- package/dist/shaka-player.ui.debug.externs.js +148 -129
- package/dist/shaka-player.ui.debug.js +586 -649
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +148 -129
- package/dist/shaka-player.ui.js +1008 -1028
- 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/config.md +0 -2
- package/docs/tutorials/drm-config.md +5 -0
- package/docs/tutorials/fairplay.md +7 -22
- package/docs/tutorials/faq.md +8 -19
- package/docs/tutorials/index.json +3 -8
- package/docs/tutorials/plugins.md +4 -6
- package/docs/tutorials/selenium-grid-config.md +122 -0
- package/docs/tutorials/upgrade.md +83 -11
- package/docs/tutorials/welcome.md +10 -2
- package/externs/cmcd.js +1 -1
- package/externs/polyfill.js +15 -0
- package/externs/shaka/manifest.js +5 -1
- package/externs/shaka/net.js +12 -0
- package/externs/shaka/offline.js +5 -1
- package/externs/shaka/player.js +39 -32
- package/externs/shaka/text.js +12 -12
- package/externs/sourcebuffer.js +15 -0
- package/karma.conf.js +137 -30
- package/lib/abr/simple_abr_manager.js +12 -6
- package/lib/ads/client_side_ad.js +13 -2
- package/lib/ads/client_side_ad_manager.js +22 -4
- package/lib/cast/cast_proxy.js +3 -4
- package/lib/cast/cast_utils.js +0 -1
- 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/content_protection.js +85 -5
- package/lib/dash/dash_parser.js +10 -12
- 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 +386 -749
- package/lib/hls/manifest_text_parser.js +5 -6
- package/lib/media/adaptation_set.js +1 -2
- package/lib/media/content_workarounds.js +2 -2
- package/lib/media/drm_engine.js +105 -55
- package/lib/media/gap_jumping_controller.js +10 -45
- package/lib/media/media_source_engine.js +90 -17
- package/lib/media/mp4_segment_index_parser.js +1 -4
- package/lib/media/playhead.js +4 -7
- package/lib/media/presentation_timeline.js +19 -10
- package/lib/media/segment_index.js +13 -46
- package/lib/media/segment_reference.js +47 -1
- package/lib/media/streaming_engine.js +35 -17
- package/lib/media/time_ranges_utils.js +5 -12
- package/lib/media/video_wrapper.js +1 -1
- package/lib/net/networking_engine.js +4 -1
- package/lib/offline/indexeddb/v1_storage_cell.js +1 -0
- package/lib/offline/indexeddb/v2_storage_cell.js +1 -0
- package/lib/offline/manifest_converter.js +1 -0
- package/lib/offline/storage.js +104 -136
- package/lib/player.js +50 -216
- package/lib/polyfill/all.js +2 -3
- package/lib/polyfill/encryption_scheme.js +1 -1
- package/lib/polyfill/media_capabilities.js +15 -9
- package/lib/polyfill/mediasource.js +0 -28
- package/lib/polyfill/patchedmediakeys_nop.js +2 -0
- package/lib/polyfill/patchedmediakeys_webkit.js +2 -0
- package/lib/polyfill/symbol.js +46 -0
- package/lib/text/cue.js +1 -7
- package/lib/text/lrc_text_parser.js +8 -0
- package/lib/text/mp4_ttml_parser.js +8 -0
- package/lib/text/mp4_vtt_parser.js +8 -0
- package/lib/text/sbv_text_parser.js +8 -0
- package/lib/text/simple_text_displayer.js +3 -8
- package/lib/text/srt_text_parser.js +8 -0
- package/lib/text/ssa_text_parser.js +8 -0
- package/lib/text/text_engine.js +19 -3
- package/lib/text/ttml_text_parser.js +16 -5
- package/lib/text/ui_text_displayer.js +2 -8
- package/lib/text/vtt_text_parser.js +24 -2
- package/lib/text/web_vtt_generator.js +1 -7
- package/lib/util/buffer_utils.js +1 -3
- package/lib/util/ebml_parser.js +3 -3
- package/lib/util/error.js +10 -14
- package/lib/util/fairplay_utils.js +109 -0
- package/lib/util/functional.js +0 -42
- package/lib/util/iterables.js +0 -46
- package/lib/util/mime_utils.js +2 -0
- 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 +48 -3
- package/lib/util/player_configuration.js +12 -6
- package/lib/util/pssh.js +24 -8
- package/lib/util/stream_utils.js +96 -25
- package/lib/util/string_utils.js +3 -5
- package/lib/util/uint8array_utils.js +3 -21
- package/lib/util/xml_utils.js +16 -8
- package/package.json +61 -36
- package/roadmap.md +27 -27
- package/shaka-player.uncompiled.js +1 -3
- 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 +1 -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 +45 -10
- package/test/dash/dash_parser_live_unit.js +2 -15
- package/test/dash/dash_parser_manifest_unit.js +2 -40
- 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 +3 -13
- package/test/dash/mpd_utils_unit.js +3 -11
- package/test/demo/demo_unit.js +2 -6
- package/test/deprecate/enforcer_unit.js +0 -4
- package/test/deprecate/version_unit.js +0 -2
- package/test/hls/hls_live_unit.js +101 -234
- package/test/hls/hls_parser_unit.js +517 -447
- 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 +90 -144
- package/test/media/manifest_parser_unit.js +0 -4
- package/test/media/media_source_engine_integration.js +26 -10
- package/test/media/media_source_engine_unit.js +8 -20
- 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 +35 -207
- package/test/media/presentation_timeline_unit.js +4 -7
- package/test/media/quality_observer_unit.js +0 -4
- package/test/media/region_observer_unit.js +1 -6
- package/test/media/region_timeline_unit.js +0 -3
- package/test/media/segment_index_unit.js +15 -31
- 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 +13 -75
- package/test/media/streaming_engine_unit.js +14 -37
- package/test/media/time_ranges_utils_unit.js +0 -7
- 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 +34 -12
- package/test/offline/offline_integration.js +1 -10
- package/test/offline/offline_manifest_parser_unit.js +1 -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 +6 -31
- package/test/player_external.js +1 -15
- package/test/player_integration.js +38 -28
- 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 +0 -7
- package/test/player_unit.js +78 -37
- package/test/routing/walker_unit.js +0 -8
- 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 +11 -11
- 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 +12 -15
- package/test/test/util/manifest_parser_util.js +4 -7
- package/test/test/util/offline_utils.js +1 -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 +1 -15
- package/test/test/util/test_scheme.js +25 -20
- package/test/test/util/ttml_utils.js +0 -2
- package/test/test/util/ui_utils.js +0 -9
- package/test/test/util/util.js +9 -23
- package/test/test/util/waiter.js +84 -43
- package/test/text/cue_integration.js +2 -6
- package/test/text/lrc_text_parser_unit.js +6 -11
- package/test/text/mp4_ttml_parser_unit.js +6 -10
- package/test/text/mp4_vtt_parser_unit.js +7 -12
- package/test/text/sbv_text_parser_unit.js +5 -10
- package/test/text/simple_text_displayer_unit.js +1 -8
- package/test/text/srt_text_parser_unit.js +5 -10
- package/test/text/ssa_text_parser_unit.js +17 -34
- package/test/text/text_engine_unit.js +47 -12
- package/test/text/text_track_integration.js +0 -2
- package/test/text/ttml_text_parser_unit.js +79 -88
- package/test/text/ui_text_displayer_unit.js +44 -41
- package/test/text/vtt_text_parser_unit.js +55 -66
- 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 +1 -12
- package/test/ui/ui_customization_unit.js +0 -6
- package/test/ui/ui_integration.js +0 -32
- package/test/ui/ui_unit.js +28 -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 +3 -3
- 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/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 +26 -15
- 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/ui/controls.js +65 -40
- package/ui/fullscreen_button.js +26 -6
- package/ui/less/ad_controls.less +6 -6
- package/ui/less/buttons.less +6 -6
- package/ui/less/containers.less +10 -12
- package/ui/less/overflow_menu.less +4 -4
- package/ui/less/range_elements.less +7 -2
- package/ui/less/tooltip.less +4 -4
- package/ui/locales/en.json +1 -0
- package/ui/locales/sjn-translations.yaml +257 -0
- package/ui/locales/sjn.json +42 -0
- package/ui/locales/source.json +5 -0
- package/ui/resolution_selection.js +31 -33
- package/ui/seek_bar.js +2 -1
- package/ui/ui.js +0 -17
- package/.github/workflows/build_and_test.yaml +0 -73
- package/.github/workflows/release.yaml +0 -53
- package/docs/tutorials/upgrade-v2-5.md +0 -441
- package/docs/tutorials/upgrade-v3.md +0 -38
- package/externs/svgelement.js +0 -18
- package/externs/webcrypto.js +0 -18
- package/lib/polyfill/mathround.js +0 -49
- package/lib/polyfill/patchedmediakeys_apple.js +0 -744
- package/lib/polyfill/patchedmediakeys_ms.js +0 -698
- package/lib/util/mutex.js +0 -52
- package/test/util/functional_unit.js +0 -82
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.media.PresentationTimeline');
|
|
8
|
-
goog.require('shaka.test.ManifestParser');
|
|
9
|
-
|
|
10
7
|
describe('PresentationTimeline', () => {
|
|
11
8
|
const originalDateNow = Date.now;
|
|
12
9
|
const makeSegmentReference = (startTime, endTime) => {
|
|
@@ -183,7 +180,7 @@ describe('PresentationTimeline', () => {
|
|
|
183
180
|
|
|
184
181
|
// In spite of the current time, the explicit segment times will decide
|
|
185
182
|
// the availability window.
|
|
186
|
-
// See https://github.com/
|
|
183
|
+
// See https://github.com/shaka-project/shaka-player/issues/999
|
|
187
184
|
setElapsed(1000);
|
|
188
185
|
timeline.notifySegments([ref1, ref2, ref3, ref4, ref5]);
|
|
189
186
|
|
|
@@ -283,7 +280,7 @@ describe('PresentationTimeline', () => {
|
|
|
283
280
|
|
|
284
281
|
// In spite of the current time, the explicit segment times will decide
|
|
285
282
|
// the availability window.
|
|
286
|
-
// See https://github.com/
|
|
283
|
+
// See https://github.com/shaka-project/shaka-player/issues/999
|
|
287
284
|
setElapsed(1000);
|
|
288
285
|
timeline.notifySegments([ref1, ref2, ref3, ref4, ref5]);
|
|
289
286
|
|
|
@@ -396,12 +393,12 @@ describe('PresentationTimeline', () => {
|
|
|
396
393
|
expect(timeline.getSafeSeekRangeStart(25)).toBe(5);
|
|
397
394
|
});
|
|
398
395
|
|
|
399
|
-
// Regression test for https://github.com/
|
|
396
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/2831
|
|
400
397
|
it('will round up to the nearest ms', () => {
|
|
401
398
|
const timeline = makeVodTimeline(/* duration= */ 60);
|
|
402
399
|
// Seeking to this exact number may result in seeking to slightly less
|
|
403
400
|
// than that, due to rounding.
|
|
404
|
-
timeline.setUserSeekStart(1.
|
|
401
|
+
timeline.setUserSeekStart(1.458666666666666);
|
|
405
402
|
// So the safe range start should be slightly higher, with fewer digits.
|
|
406
403
|
expect(timeline.getSafeSeekRangeStart(0)).toBe(1.459);
|
|
407
404
|
});
|
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.media.RegionObserver');
|
|
8
|
-
goog.require('shaka.media.RegionTimeline');
|
|
9
|
-
goog.require('shaka.test.Util');
|
|
10
|
-
goog.requireType('shaka.media.IPlayheadObserver');
|
|
11
|
-
|
|
12
7
|
describe('RegionObserver', () => {
|
|
13
8
|
/** @type {!shaka.media.RegionTimeline} */
|
|
14
9
|
let timeline;
|
|
@@ -324,7 +319,7 @@ describe('RegionObserver', () => {
|
|
|
324
319
|
expect(onSkipRegion).not.toHaveBeenCalled();
|
|
325
320
|
});
|
|
326
321
|
|
|
327
|
-
// See https://github.com/
|
|
322
|
+
// See https://github.com/shaka-project/shaka-player/issues/3949
|
|
328
323
|
it('cleans up references to regions', async () => {
|
|
329
324
|
const region = createRegion('my-region', 0, 10);
|
|
330
325
|
timeline.addRegion(region);
|
|
@@ -4,12 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.asserts');
|
|
8
|
-
goog.require('shaka.media.MetaSegmentIndex');
|
|
9
|
-
goog.require('shaka.media.SegmentIndex');
|
|
10
|
-
goog.require('shaka.media.SegmentReference');
|
|
11
|
-
goog.require('shaka.test.Util');
|
|
12
|
-
|
|
13
7
|
describe('SegmentIndex', /** @suppress {accessControls} */ () => {
|
|
14
8
|
const actual1 = makeReference(uri(0), 0, 10);
|
|
15
9
|
const actual2 = makeReference(uri(20), 10, 20);
|
|
@@ -699,22 +693,6 @@ describe('SegmentIndex', /** @suppress {accessControls} */ () => {
|
|
|
699
693
|
expect(iterator.current()).toBe(null);
|
|
700
694
|
});
|
|
701
695
|
|
|
702
|
-
describe('seek', () => {
|
|
703
|
-
it('returns the matching segment', () => {
|
|
704
|
-
const index = new shaka.media.SegmentIndex(inputRefs);
|
|
705
|
-
const iterator = index[Symbol.iterator]();
|
|
706
|
-
expect(iterator.seek(10)).toBe(inputRefs[1]);
|
|
707
|
-
expect(iterator.current()).toBe(inputRefs[1]);
|
|
708
|
-
});
|
|
709
|
-
|
|
710
|
-
it('returns the matching segment with partial segments', () => {
|
|
711
|
-
const index = new shaka.media.SegmentIndex(inputRefsWithPartial);
|
|
712
|
-
const iterator = index[Symbol.iterator]();
|
|
713
|
-
expect(iterator.seek(8)).toBe(inputRefsWithPartial[0]);
|
|
714
|
-
expect(iterator.seek(10)).toBe(partialRefs1[0]);
|
|
715
|
-
});
|
|
716
|
-
});
|
|
717
|
-
|
|
718
696
|
describe('next', () => {
|
|
719
697
|
it('starts with the first segment', () => {
|
|
720
698
|
const index = new shaka.media.SegmentIndex(inputRefs);
|
|
@@ -731,20 +709,20 @@ describe('SegmentIndex', /** @suppress {accessControls} */ () => {
|
|
|
731
709
|
expect(iterator.next().value).toBe(null);
|
|
732
710
|
});
|
|
733
711
|
|
|
734
|
-
it('iterates
|
|
712
|
+
it('iterates from getIteratorForTime', () => {
|
|
735
713
|
const index = new shaka.media.SegmentIndex(inputRefs);
|
|
736
|
-
const iterator = index
|
|
737
|
-
expect(iterator.
|
|
714
|
+
const iterator = index.getIteratorForTime(10);
|
|
715
|
+
expect(iterator.next().value).toBe(inputRefs[1]);
|
|
738
716
|
expect(iterator.current()).toBe(inputRefs[1]);
|
|
739
717
|
expect(iterator.next().value).toBe(inputRefs[2]);
|
|
740
718
|
expect(iterator.current()).toBe(inputRefs[2]);
|
|
741
719
|
expect(iterator.next().value).toBe(null);
|
|
742
720
|
});
|
|
743
721
|
|
|
744
|
-
it('iterates
|
|
722
|
+
it('iterates from getIteratorForTime with partial segments', () => {
|
|
745
723
|
const index = new shaka.media.SegmentIndex(inputRefsWithPartial);
|
|
746
|
-
const iterator = index
|
|
747
|
-
expect(iterator.
|
|
724
|
+
const iterator = index.getIteratorForTime(10);
|
|
725
|
+
expect(iterator.next().value).toBe(partialRefs1[0]);
|
|
748
726
|
expect(iterator.current()).toBe(partialRefs1[0]);
|
|
749
727
|
expect(iterator.next().value).toBe(partialRefs1[1]);
|
|
750
728
|
expect(iterator.current()).toBe(partialRefs1[1]);
|
|
@@ -941,11 +919,17 @@ describe('SegmentIndex', /** @suppress {accessControls} */ () => {
|
|
|
941
919
|
expect(Array.from(metaIndex)).toEqual(oldRefs);
|
|
942
920
|
|
|
943
921
|
// Every 0.1 seconds, return the next new ref.
|
|
944
|
-
|
|
945
|
-
|
|
922
|
+
const done = new Promise((resolve, reject) => {
|
|
923
|
+
index1.updateEvery(0.1, () => {
|
|
924
|
+
if (newRefs.length == 0) {
|
|
925
|
+
resolve();
|
|
926
|
+
}
|
|
927
|
+
return [newRefs.shift()];
|
|
928
|
+
});
|
|
946
929
|
});
|
|
947
930
|
// Wait long enough for all three new refs to be appended.
|
|
948
|
-
|
|
931
|
+
// Or for all of the new refs to be passed out.
|
|
932
|
+
await Promise.race([shaka.test.Util.delay(1), done]);
|
|
949
933
|
|
|
950
934
|
expect(Array.from(metaIndex)).toEqual(oldRefs.concat(inputRefs2));
|
|
951
935
|
});
|
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.media.InitSegmentReference');
|
|
8
|
-
goog.require('shaka.media.SegmentReference');
|
|
9
|
-
|
|
10
7
|
describe('SegmentReference', () => {
|
|
11
8
|
it('returns in getters values from constructor parameters', () => {
|
|
12
9
|
const initSegmentReference = new shaka.media.InitSegmentReference(
|
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
goog.require('shaka.media.StallDetector');
|
|
9
|
-
goog.require('shaka.media.StallDetector.Implementation');
|
|
10
|
-
goog.require('shaka.test.Util');
|
|
11
|
-
|
|
12
7
|
describe('StallDetector', () => {
|
|
13
8
|
/**
|
|
14
9
|
* @implements {shaka.media.StallDetector.Implementation}
|
|
@@ -4,31 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.media.InitSegmentReference');
|
|
8
|
-
goog.require('shaka.media.MediaSourceEngine');
|
|
9
|
-
goog.require('shaka.media.MediaSourcePlayhead');
|
|
10
|
-
goog.require('shaka.media.SegmentIndex');
|
|
11
|
-
goog.require('shaka.media.SegmentReference');
|
|
12
|
-
goog.require('shaka.media.StreamingEngine');
|
|
13
|
-
goog.require('shaka.net.NetworkingEngine');
|
|
14
|
-
goog.require('shaka.test.FakeClosedCaptionParser');
|
|
15
|
-
goog.require('shaka.test.FakeTextDisplayer');
|
|
16
|
-
goog.require('shaka.test.Mp4LiveStreamGenerator');
|
|
17
|
-
goog.require('shaka.test.Mp4VodStreamGenerator');
|
|
18
|
-
goog.require('shaka.test.StreamingEngineUtil');
|
|
19
|
-
goog.require('shaka.test.TestScheme');
|
|
20
|
-
goog.require('shaka.test.UiUtils');
|
|
21
|
-
goog.require('shaka.test.Util');
|
|
22
|
-
goog.require('shaka.test.Waiter');
|
|
23
|
-
goog.require('shaka.util.EventManager');
|
|
24
|
-
goog.require('shaka.util.ManifestParserUtils');
|
|
25
|
-
goog.require('shaka.util.Platform');
|
|
26
|
-
goog.require('shaka.util.PlayerConfiguration');
|
|
27
|
-
goog.requireType('shaka.media.Playhead');
|
|
28
|
-
goog.requireType('shaka.media.PresentationTimeline');
|
|
29
|
-
goog.requireType('shaka.test.FakeNetworkingEngine');
|
|
30
|
-
goog.requireType('shaka.test.FakePresentationTimeline');
|
|
31
|
-
|
|
32
7
|
describe('StreamingEngine', () => {
|
|
33
8
|
const ContentType = shaka.util.ManifestParserUtils.ContentType;
|
|
34
9
|
const Util = shaka.test.Util;
|
|
@@ -93,6 +68,7 @@ describe('StreamingEngine', () => {
|
|
|
93
68
|
video,
|
|
94
69
|
new shaka.test.FakeClosedCaptionParser(),
|
|
95
70
|
new shaka.test.FakeTextDisplayer());
|
|
71
|
+
waiter.setMediaSourceEngine(mediaSourceEngine);
|
|
96
72
|
});
|
|
97
73
|
|
|
98
74
|
afterEach(async () => {
|
|
@@ -238,8 +214,7 @@ describe('StreamingEngine', () => {
|
|
|
238
214
|
manifest,
|
|
239
215
|
config,
|
|
240
216
|
/* startTime= */ null,
|
|
241
|
-
onSeek
|
|
242
|
-
shaka.test.Util.spyFunc(onEvent));
|
|
217
|
+
onSeek);
|
|
243
218
|
}
|
|
244
219
|
|
|
245
220
|
function setupManifest(
|
|
@@ -287,7 +262,11 @@ describe('StreamingEngine', () => {
|
|
|
287
262
|
streamingEngine.switchVariant(variant);
|
|
288
263
|
await streamingEngine.start();
|
|
289
264
|
video.play();
|
|
290
|
-
|
|
265
|
+
// The overall test timeout is 120 seconds, and the content is 60
|
|
266
|
+
// seconds. It should be possible to complete this test in 100 seconds,
|
|
267
|
+
// and if not, we want the error thrown to be within the overall test's
|
|
268
|
+
// timeout window.
|
|
269
|
+
await waiter.timeoutAfter(100).waitForEnd(video);
|
|
291
270
|
});
|
|
292
271
|
|
|
293
272
|
it('plays at high playback rates', async () => {
|
|
@@ -308,14 +287,7 @@ describe('StreamingEngine', () => {
|
|
|
308
287
|
await waiter.timeoutAfter(10).waitForMovement(video);
|
|
309
288
|
video.playbackRate = 10;
|
|
310
289
|
|
|
311
|
-
|
|
312
|
-
// Edge, and Safari) where the playhead can go past duration.
|
|
313
|
-
// To cope with this, don't fail on timeout. If the video never got
|
|
314
|
-
// flagged as "ended", check for the playhead to be near or past the end.
|
|
315
|
-
await waiter.timeoutAfter(30).failOnTimeout(false).waitForEnd(video);
|
|
316
|
-
if (!video.ended) {
|
|
317
|
-
expect(video.currentTime).toBeGreaterThan(video.duration - 0.1);
|
|
318
|
-
}
|
|
290
|
+
await waiter.timeoutAfter(30).waitForEnd(video);
|
|
319
291
|
});
|
|
320
292
|
|
|
321
293
|
it('can handle buffered seeks', async () => {
|
|
@@ -325,9 +297,9 @@ describe('StreamingEngine', () => {
|
|
|
325
297
|
video.play();
|
|
326
298
|
|
|
327
299
|
// After 35 seconds seek back 10 seconds into the first Period.
|
|
328
|
-
await waiter.timeoutAfter(
|
|
300
|
+
await waiter.timeoutAfter(80).waitUntilPlayheadReaches(video, 35);
|
|
329
301
|
video.currentTime = 25;
|
|
330
|
-
await waiter.timeoutAfter(
|
|
302
|
+
await waiter.timeoutAfter(80).waitForEnd(video);
|
|
331
303
|
});
|
|
332
304
|
|
|
333
305
|
it('can handle unbuffered seeks', async () => {
|
|
@@ -430,7 +402,6 @@ describe('StreamingEngine', () => {
|
|
|
430
402
|
// TODO: Consider also adding tests for missing frames.
|
|
431
403
|
describe('gap jumping', () => {
|
|
432
404
|
it('jumps small gaps at the beginning', async () => {
|
|
433
|
-
config.smallGapLimit = 5;
|
|
434
405
|
await setupGappyContent(/* gapAtStart= */ 1, /* dropSegment= */ false);
|
|
435
406
|
|
|
436
407
|
// Let's go!
|
|
@@ -446,8 +417,6 @@ describe('StreamingEngine', () => {
|
|
|
446
417
|
});
|
|
447
418
|
|
|
448
419
|
it('jumps large gaps at the beginning', async () => {
|
|
449
|
-
config.smallGapLimit = 1;
|
|
450
|
-
config.jumpLargeGaps = true;
|
|
451
420
|
await setupGappyContent(/* gapAtStart= */ 5, /* dropSegment= */ false);
|
|
452
421
|
|
|
453
422
|
// Let's go!
|
|
@@ -463,7 +432,6 @@ describe('StreamingEngine', () => {
|
|
|
463
432
|
});
|
|
464
433
|
|
|
465
434
|
it('jumps small gaps in the middle', async () => {
|
|
466
|
-
config.smallGapLimit = 20;
|
|
467
435
|
await setupGappyContent(/* gapAtStart= */ 0, /* dropSegment= */ true);
|
|
468
436
|
|
|
469
437
|
// Let's go!
|
|
@@ -478,11 +446,9 @@ describe('StreamingEngine', () => {
|
|
|
478
446
|
await waiter.timeoutAfter(60).waitUntilPlayheadReaches(video, 23);
|
|
479
447
|
// Should be close enough to still have the gap buffered.
|
|
480
448
|
expect(video.buffered.length).toBe(2);
|
|
481
|
-
expect(onEvent).not.toHaveBeenCalled();
|
|
482
449
|
});
|
|
483
450
|
|
|
484
451
|
it('jumps large gaps in the middle', async () => {
|
|
485
|
-
config.jumpLargeGaps = true;
|
|
486
452
|
await setupGappyContent(/* gapAtStart= */ 0, /* dropSegment= */ true);
|
|
487
453
|
|
|
488
454
|
// Let's go!
|
|
@@ -497,37 +463,6 @@ describe('StreamingEngine', () => {
|
|
|
497
463
|
await waiter.timeoutAfter(60).waitUntilPlayheadReaches(video, 23);
|
|
498
464
|
// Should be close enough to still have the gap buffered.
|
|
499
465
|
expect(video.buffered.length).toBe(2);
|
|
500
|
-
expect(onEvent).toHaveBeenCalled();
|
|
501
|
-
});
|
|
502
|
-
|
|
503
|
-
it('won\'t jump large gaps with preventDefault()', async () => {
|
|
504
|
-
config.jumpLargeGaps = true;
|
|
505
|
-
await setupGappyContent(/* gapAtStart= */ 0, /* dropSegment= */ true);
|
|
506
|
-
|
|
507
|
-
onEvent.and.callFake((event) => {
|
|
508
|
-
event.preventDefault();
|
|
509
|
-
});
|
|
510
|
-
|
|
511
|
-
// Let's go!
|
|
512
|
-
streamingEngine.switchVariant(variant);
|
|
513
|
-
await streamingEngine.start();
|
|
514
|
-
|
|
515
|
-
await waiter.timeoutAfter(5).waitForEvent(video, 'loadeddata');
|
|
516
|
-
|
|
517
|
-
let seekCount = 0;
|
|
518
|
-
eventManager.listen(video, 'seeking', () => {
|
|
519
|
-
seekCount++;
|
|
520
|
-
});
|
|
521
|
-
|
|
522
|
-
video.currentTime = 8;
|
|
523
|
-
video.play();
|
|
524
|
-
|
|
525
|
-
await shaka.test.Util.delay(5);
|
|
526
|
-
|
|
527
|
-
// Edge somehow plays _into_ the gap, and Xbox One plays _through_ the
|
|
528
|
-
// gap. Just make sure _we_ don't jump the gap by seeking. One seek is
|
|
529
|
-
// required to start playback at time 8.
|
|
530
|
-
expect(seekCount).toBe(1);
|
|
531
466
|
});
|
|
532
467
|
|
|
533
468
|
/**
|
|
@@ -637,6 +572,7 @@ describe('StreamingEngine', () => {
|
|
|
637
572
|
minBufferTime: 2,
|
|
638
573
|
textStreams: [],
|
|
639
574
|
imageStreams: [],
|
|
575
|
+
sequenceMode: false,
|
|
640
576
|
variants: [{
|
|
641
577
|
id: 1,
|
|
642
578
|
video: {
|
|
@@ -649,6 +585,7 @@ describe('StreamingEngine', () => {
|
|
|
649
585
|
width: 600,
|
|
650
586
|
height: 400,
|
|
651
587
|
type: shaka.util.ManifestParserUtils.ContentType.VIDEO,
|
|
588
|
+
drmInfos: [],
|
|
652
589
|
},
|
|
653
590
|
audio: {
|
|
654
591
|
id: 3,
|
|
@@ -658,6 +595,7 @@ describe('StreamingEngine', () => {
|
|
|
658
595
|
codecs: 'mp4a.40.2',
|
|
659
596
|
bandwidth: 192000,
|
|
660
597
|
type: shaka.util.ManifestParserUtils.ContentType.AUDIO,
|
|
598
|
+
drmInfos: [],
|
|
661
599
|
},
|
|
662
600
|
}],
|
|
663
601
|
};
|
|
@@ -4,30 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.asserts');
|
|
8
|
-
goog.require('shaka.log');
|
|
9
|
-
goog.require('shaka.media.InitSegmentReference');
|
|
10
|
-
goog.require('shaka.media.SegmentReference');
|
|
11
|
-
goog.require('shaka.media.StreamingEngine');
|
|
12
|
-
goog.require('shaka.net.NetworkingEngine');
|
|
13
|
-
goog.require('shaka.net.NetworkingEngine.PendingRequest');
|
|
14
|
-
goog.require('shaka.test.FakeNetworkingEngine');
|
|
15
|
-
goog.require('shaka.test.FakeMediaSourceEngine');
|
|
16
|
-
goog.require('shaka.test.ManifestGenerator');
|
|
17
|
-
goog.require('shaka.test.StreamingEngineUtil');
|
|
18
|
-
goog.require('shaka.test.Util');
|
|
19
|
-
goog.require('shaka.util.AbortableOperation');
|
|
20
|
-
goog.require('shaka.util.Error');
|
|
21
|
-
goog.require('shaka.util.Iterables');
|
|
22
|
-
goog.require('shaka.util.ManifestParserUtils');
|
|
23
|
-
goog.require('shaka.util.MimeUtils');
|
|
24
|
-
goog.require('shaka.util.PlayerConfiguration');
|
|
25
|
-
goog.require('shaka.util.PublicPromise');
|
|
26
|
-
goog.require('shaka.util.Uint8ArrayUtils');
|
|
27
|
-
goog.requireType('shaka.media.PresentationTimeline');
|
|
28
|
-
goog.requireType('shaka.test.FakeNetworkingEngine');
|
|
29
|
-
goog.requireType('shaka.test.FakePresentationTimeline');
|
|
30
|
-
|
|
31
7
|
describe('StreamingEngine', () => {
|
|
32
8
|
const Util = shaka.test.Util;
|
|
33
9
|
const ContentType = shaka.util.ManifestParserUtils.ContentType;
|
|
@@ -284,7 +260,7 @@ describe('StreamingEngine', () => {
|
|
|
284
260
|
};
|
|
285
261
|
|
|
286
262
|
const segmentsInFirstPeriod = 12;
|
|
287
|
-
for (
|
|
263
|
+
for (let i = 0; i < segmentsInFirstPeriod; i++) {
|
|
288
264
|
segmentData[ContentType.AUDIO].segments.push(
|
|
289
265
|
makeBuffer(segmentSizes[ContentType.AUDIO]));
|
|
290
266
|
segmentData[ContentType.VIDEO].segments.push(
|
|
@@ -298,7 +274,7 @@ describe('StreamingEngine', () => {
|
|
|
298
274
|
}
|
|
299
275
|
|
|
300
276
|
const segmentsInSecondPeriod = 2;
|
|
301
|
-
for (
|
|
277
|
+
for (let i = 0; i < segmentsInSecondPeriod; i++) {
|
|
302
278
|
segmentData[ContentType.AUDIO].segments.push(
|
|
303
279
|
makeBuffer(segmentSizes[ContentType.AUDIO]));
|
|
304
280
|
segmentData[ContentType.VIDEO].segments.push(
|
|
@@ -520,7 +496,8 @@ describe('StreamingEngine', () => {
|
|
|
520
496
|
expectedMseInit.set(ContentType.VIDEO, videoStream);
|
|
521
497
|
expectedMseInit.set(ContentType.TEXT, textStream);
|
|
522
498
|
|
|
523
|
-
expect(mediaSourceEngine.init).toHaveBeenCalledWith(expectedMseInit,
|
|
499
|
+
expect(mediaSourceEngine.init).toHaveBeenCalledWith(expectedMseInit,
|
|
500
|
+
/** forceTransmuxTS= */ false, /** sequenceMode= */ false);
|
|
524
501
|
expect(mediaSourceEngine.init).toHaveBeenCalledTimes(1);
|
|
525
502
|
|
|
526
503
|
expect(mediaSourceEngine.setDuration).toHaveBeenCalledTimes(1);
|
|
@@ -651,7 +628,7 @@ describe('StreamingEngine', () => {
|
|
|
651
628
|
// should be buffered. Those segment numbers are 1-based, and this array
|
|
652
629
|
// is 0-based, so we expect i >= 9 to be downloaded.
|
|
653
630
|
const segments = mediaSourceEngine.segments;
|
|
654
|
-
for (
|
|
631
|
+
for (let i = 0; i < 14; i++) {
|
|
655
632
|
expect(segments[ContentType.AUDIO][i]).withContext(i).toBe(i >= 9);
|
|
656
633
|
expect(segments[ContentType.VIDEO][i]).withContext(i).toBe(i >= 9);
|
|
657
634
|
expect(segments[ContentType.TEXT][i]).withContext(i).toBe(i >= 9);
|
|
@@ -757,7 +734,7 @@ describe('StreamingEngine', () => {
|
|
|
757
734
|
expect(timeline.setDuration).toHaveBeenCalledWith(35);
|
|
758
735
|
});
|
|
759
736
|
|
|
760
|
-
// https://github.com/
|
|
737
|
+
// https://github.com/shaka-project/shaka-player/issues/979
|
|
761
738
|
it('does not expand the timeline duration', async () => {
|
|
762
739
|
setupVod();
|
|
763
740
|
mediaSourceEngine = new shaka.test.FakeMediaSourceEngine(segmentData);
|
|
@@ -783,7 +760,7 @@ describe('StreamingEngine', () => {
|
|
|
783
760
|
expect(timeline.setDuration).not.toHaveBeenCalled();
|
|
784
761
|
});
|
|
785
762
|
|
|
786
|
-
// https://github.com/
|
|
763
|
+
// https://github.com/shaka-project/shaka-player/issues/1967
|
|
787
764
|
it('does not change duration when 0', async () => {
|
|
788
765
|
setupVod();
|
|
789
766
|
mediaSourceEngine = new shaka.test.FakeMediaSourceEngine(segmentData);
|
|
@@ -825,10 +802,10 @@ describe('StreamingEngine', () => {
|
|
|
825
802
|
asymmetricMatch: (val) => val > 40 && val <= 40.1,
|
|
826
803
|
};
|
|
827
804
|
expect(mediaSourceEngine.setStreamProperties)
|
|
828
|
-
.toHaveBeenCalledWith('video', 0, lt20, gt40);
|
|
805
|
+
.toHaveBeenCalledWith('video', 0, lt20, gt40, false);
|
|
829
806
|
});
|
|
830
807
|
|
|
831
|
-
// Regression test for https://github.com/
|
|
808
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/3717
|
|
832
809
|
it('applies fudge factors for the duration', async () => {
|
|
833
810
|
setupVod();
|
|
834
811
|
|
|
@@ -931,7 +908,7 @@ describe('StreamingEngine', () => {
|
|
|
931
908
|
expect(mediaSourceEngine.appendBuffer).toHaveBeenCalled();
|
|
932
909
|
});
|
|
933
910
|
|
|
934
|
-
// https://github.com/
|
|
911
|
+
// https://github.com/shaka-project/shaka-player/issues/2957
|
|
935
912
|
it('plays with fewer text segments', async () => {
|
|
936
913
|
setupVod();
|
|
937
914
|
|
|
@@ -1093,7 +1070,7 @@ describe('StreamingEngine', () => {
|
|
|
1093
1070
|
expect(mediaSourceEngine.resetCaptionParser).not.toHaveBeenCalled();
|
|
1094
1071
|
});
|
|
1095
1072
|
|
|
1096
|
-
// See https://github.com/
|
|
1073
|
+
// See https://github.com/shaka-project/shaka-player/issues/2956
|
|
1097
1074
|
it('works with fast variant switches during update', async () => {
|
|
1098
1075
|
// Delay the appendBuffer call until later so we are waiting for this to
|
|
1099
1076
|
// finish when we switch.
|
|
@@ -1661,7 +1638,7 @@ describe('StreamingEngine', () => {
|
|
|
1661
1638
|
});
|
|
1662
1639
|
});
|
|
1663
1640
|
|
|
1664
|
-
// https://github.com/
|
|
1641
|
+
// https://github.com/shaka-project/shaka-player/issues/2670
|
|
1665
1642
|
it('rapid unbuffered seeks', async () => {
|
|
1666
1643
|
// This test simulates rapid dragging of the seek bar, as in #2670.
|
|
1667
1644
|
// In that issue, we would buffer the wrong segments due to a race
|
|
@@ -1800,7 +1777,7 @@ describe('StreamingEngine', () => {
|
|
|
1800
1777
|
|
|
1801
1778
|
// Since we performed an unbuffered seek into the second Period, the
|
|
1802
1779
|
// first 12 segments should not be buffered.
|
|
1803
|
-
for (
|
|
1780
|
+
for (let i = 0; i < 14; i++) {
|
|
1804
1781
|
expect(mediaSourceEngine.segments[ContentType.AUDIO][i]).toBe(i >= 12);
|
|
1805
1782
|
expect(mediaSourceEngine.segments[ContentType.VIDEO][i]).toBe(i >= 12);
|
|
1806
1783
|
expect(mediaSourceEngine.segments[ContentType.TEXT][i]).toBe(i >= 12);
|
|
@@ -2602,7 +2579,7 @@ describe('StreamingEngine', () => {
|
|
|
2602
2579
|
// should be buffered. Those segment numbers are 1-based, and this array
|
|
2603
2580
|
// is 0-based, so we expect i >= 9 to be downloaded.
|
|
2604
2581
|
const segments = mediaSourceEngine.segments;
|
|
2605
|
-
for (
|
|
2582
|
+
for (let i = 0; i < 14; i++) {
|
|
2606
2583
|
expect(segments[ContentType.AUDIO][i]).withContext(i).toBe(i >= 9);
|
|
2607
2584
|
expect(segments[ContentType.VIDEO][i]).withContext(i).toBe(i >= 9);
|
|
2608
2585
|
expect(segments[ContentType.TEXT][i]).withContext(i).toBe(i >= 9);
|
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.media.TimeRangesUtils');
|
|
8
|
-
|
|
9
7
|
describe('TimeRangesUtils', () => {
|
|
10
8
|
const TimeRangesUtils = shaka.media.TimeRangesUtils;
|
|
11
9
|
|
|
@@ -24,11 +22,6 @@ describe('TimeRangesUtils', () => {
|
|
|
24
22
|
expect(TimeRangesUtils.isBuffered(b, 13)).toBe(true);
|
|
25
23
|
});
|
|
26
24
|
|
|
27
|
-
it('returns buffered when having a small gap', () => {
|
|
28
|
-
const b = createFakeBuffered([{start: 10, end: 20}]);
|
|
29
|
-
expect(TimeRangesUtils.isBuffered(b, 9, 1)).toBe(true);
|
|
30
|
-
});
|
|
31
|
-
|
|
32
25
|
// Ranges: [10-20], [30-40], [50-60]
|
|
33
26
|
defineTest('returns false when before range', {time: 3, expected: false});
|
|
34
27
|
defineTest('returns true inside first range', {time: 12, expected: true});
|
|
@@ -3,12 +3,6 @@
|
|
|
3
3
|
* Copyright 2016 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
goog.require('goog.asserts');
|
|
7
|
-
goog.require('shaka.media.Transmuxer');
|
|
8
|
-
goog.require('shaka.test.Util');
|
|
9
|
-
goog.require('shaka.util.ManifestParserUtils');
|
|
10
|
-
goog.require('shaka.util.Mp4BoxParsers');
|
|
11
|
-
goog.require('shaka.util.Mp4Parser');
|
|
12
6
|
|
|
13
7
|
describe('Transmuxer', () => {
|
|
14
8
|
const ContentType = shaka.util.ManifestParserUtils.ContentType;
|
|
@@ -4,10 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.media.WebmSegmentIndexParser');
|
|
8
|
-
goog.require('shaka.test.Util');
|
|
9
|
-
goog.require('shaka.util.Error');
|
|
10
|
-
|
|
11
7
|
describe('WebmSegmentIndexParser', () => {
|
|
12
8
|
const indexSegmentUri = '/base/test/test/assets/index-segment.webm';
|
|
13
9
|
const initSegmentUri = '/base/test/test/assets/init-segment.webm';
|
|
@@ -4,13 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.net.DataUriPlugin');
|
|
8
|
-
goog.require('shaka.net.NetworkingEngine');
|
|
9
|
-
goog.require('shaka.net.NetworkingEngine.RequestType');
|
|
10
|
-
goog.require('shaka.test.Util');
|
|
11
|
-
goog.require('shaka.util.Error');
|
|
12
|
-
goog.require('shaka.util.StringUtils');
|
|
13
|
-
|
|
14
7
|
describe('DataUriPlugin', () => {
|
|
15
8
|
const retryParameters = shaka.net.NetworkingEngine.defaultRetryParameters();
|
|
16
9
|
|
|
@@ -4,15 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
goog.require('shaka.net.HttpFetchPlugin');
|
|
9
|
-
goog.require('shaka.net.HttpXHRPlugin');
|
|
10
|
-
goog.require('shaka.net.NetworkingEngine');
|
|
11
|
-
goog.require('shaka.net.NetworkingEngine.RequestType');
|
|
12
|
-
goog.require('shaka.test.Util');
|
|
13
|
-
goog.require('shaka.util.BufferUtils');
|
|
14
|
-
goog.require('shaka.util.Error');
|
|
15
|
-
|
|
16
7
|
/**
|
|
17
8
|
* Add a set of http plugin tests, for the given scheme plugin.
|
|
18
9
|
*
|
|
@@ -4,17 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.net.Backoff');
|
|
8
|
-
goog.require('shaka.net.NetworkingEngine');
|
|
9
|
-
goog.require('shaka.net.NetworkingEngine.RequestType');
|
|
10
|
-
goog.require('shaka.test.StatusPromise');
|
|
11
|
-
goog.require('shaka.test.Util');
|
|
12
|
-
goog.require('shaka.util.AbortableOperation');
|
|
13
|
-
goog.require('shaka.util.Error');
|
|
14
|
-
goog.require('shaka.util.Networking');
|
|
15
|
-
goog.require('shaka.util.PublicPromise');
|
|
16
|
-
goog.requireType('shaka.net.NetworkingEngine.PendingRequest');
|
|
17
|
-
|
|
18
7
|
describe('NetworkingEngine', /** @suppress {accessControls} */ () => {
|
|
19
8
|
const StatusPromise = shaka.test.StatusPromise;
|
|
20
9
|
const Util = shaka.test.Util;
|
|
@@ -4,12 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('shaka.offline.indexeddb.V5StorageCell');
|
|
8
|
-
goog.require('shaka.test.IndexedDBUtils');
|
|
9
|
-
goog.require('shaka.test.OfflineUtils');
|
|
10
|
-
goog.require('shaka.test.Util');
|
|
11
|
-
goog.require('shaka.util.Error');
|
|
12
|
-
|
|
13
7
|
filterDescribe('IndexeddbStorageCell', () => window.indexedDB, () => {
|
|
14
8
|
const IndexedDBUtils = shaka.test.IndexedDBUtils;
|
|
15
9
|
const OfflineUtils = shaka.test.OfflineUtils;
|