shaka-player 3.1.5 → 3.1.8
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/workflows/build-and-test.yaml +130 -0
- package/.github/workflows/custom-actions/prep-for-appspot/action.yaml +56 -0
- package/.github/workflows/custom-actions/set-commit-status/action.yaml +41 -0
- package/.github/workflows/demo-version-index.yaml +29 -0
- package/.github/workflows/nightly-demo.yaml +42 -0
- package/.github/workflows/release-please.yaml +147 -0
- package/.github/workflows/safari-homedir-launcher.sh +18 -0
- package/.github/workflows/selenium-lab-tests.yaml +93 -0
- package/AUTHORS +2 -0
- package/CHANGELOG.md +1532 -1496
- package/CONTRIBUTING.md +2 -2
- package/CONTRIBUTORS +2 -0
- package/README.md +7 -7
- package/app-engine/README.md +9 -0
- package/app-engine/demo-version-index/README.md +14 -0
- package/app-engine/demo-version-index/app.yaml +2 -0
- package/app-engine/demo-version-index/main.py +162 -0
- package/app-engine/demo-version-index/requirements.txt +6 -0
- package/app-engine/demo-version-index/templates/index.html +114 -0
- package/app-engine/shaka-player-demo/README.md +18 -0
- package/app-engine/shaka-player-demo/app.yaml +61 -0
- package/app-engine/shaka-player-demo/main.py +95 -0
- package/app-engine/shaka-player-demo/posters/10yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/10yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/1yo.jpg +0 -0
- package/app-engine/shaka-player-demo/posters/2yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/2yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/3yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/3yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/4yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/4yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/5yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/5yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/6yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/6yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/7yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/7yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/8yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/8yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/9yo.png +0 -0
- package/app-engine/shaka-player-demo/posters/9yo.xcf +0 -0
- package/app-engine/shaka-player-demo/posters/audioOnly.gif +0 -0
- package/app-engine/shaka-player-demo/posters/audioRickRoll.gif +0 -0
- package/app-engine/shaka-player-demo/posters/colorbars.gif +0 -0
- package/app-engine/shaka-player-demo/posters/fireworks.jpg +0 -0
- package/app-engine/shaka-player-demo/posters/party-hat.png +0 -0
- package/app-engine/shaka-player-demo/posters/sources.txt +46 -0
- package/app-engine/shaka-player-demo/posters/standard.png +0 -0
- package/app-engine/shaka-player-demo/posters/trek.jpg +0 -0
- package/app-engine/shaka-player-demo/posters/valentines.png +0 -0
- package/app-engine/shaka-player-demo/posters/zombie.jpg +0 -0
- package/app-engine/shaka-player-demo/posters.py +110 -0
- package/app-engine/shaka-player-demo/requirements.txt +5 -0
- package/app-engine/shaka-player-demo/time.txt +1 -0
- package/build/README.md +1 -1
- package/build/checkversion.py +1 -1
- package/build/conformance.textproto +13 -0
- package/build/docker/Dockerfile +20 -0
- package/build/docker/docker-compose.yml +10 -0
- package/build/gendeps.py +18 -15
- package/build/generateTsDefs.py +2 -0
- package/build/shaka-lab.yaml +163 -0
- package/build/shakaBuildHelpers.py +4 -29
- package/build/test.py +93 -28
- package/build/wrapper.template.js +2 -2
- package/demo/TengwarTelcontar.woff2 +0 -0
- package/demo/asset_card.js +1 -2
- package/demo/cast_receiver/index.html +1 -1
- package/demo/cast_receiver/receiver_app.css +14 -14
- package/demo/common/assets.js +2 -0
- package/demo/config.js +0 -1
- package/demo/custom.js +0 -1
- package/demo/customWarning.txt +2 -2
- package/demo/demo.less +29 -18
- package/demo/demo_uncompiled.js +1 -13
- package/demo/index.html +1 -1
- package/demo/main.js +3 -3
- package/dist/controls.css +2 -2
- package/dist/controls.css.map +1 -1
- package/dist/demo.compiled.debug.js +191 -194
- package/dist/demo.compiled.debug.map +4 -4
- package/dist/demo.compiled.js +191 -194
- package/dist/demo.compiled.map +4 -4
- package/dist/demo.css +1 -1
- package/dist/demo.css.map +1 -1
- package/dist/deps.js +224 -218
- package/dist/locales.js +29 -29
- package/dist/receiver.compiled.debug.js +43 -45
- package/dist/receiver.compiled.debug.map +4 -4
- package/dist/receiver.compiled.js +43 -45
- package/dist/receiver.compiled.map +4 -4
- package/dist/shaka-player.compiled.d.ts +225 -222
- package/dist/shaka-player.compiled.debug.d.ts +225 -222
- package/dist/shaka-player.compiled.debug.externs.js +9 -3
- package/dist/shaka-player.compiled.debug.js +235 -241
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +9 -3
- package/dist/shaka-player.compiled.js +811 -815
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +269 -275
- package/dist/shaka-player.ui.debug.d.ts +269 -275
- package/dist/shaka-player.ui.debug.externs.js +23 -26
- package/dist/shaka-player.ui.debug.js +255 -262
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +23 -26
- package/dist/shaka-player.ui.js +945 -950
- package/dist/shaka-player.ui.map +4 -4
- package/docs/design/REDESIGN.md +33 -33
- package/docs/design/codec_preferences.md +1 -1
- package/docs/design/dash-audio-channels.md +3 -3
- package/docs/design/dash-manifests.md +1 -1
- package/docs/design/gap-jumping.md +3 -3
- package/docs/design/preload.md +2 -2
- package/docs/tutorials/faq.md +8 -8
- package/docs/tutorials/index.json +1 -0
- package/docs/tutorials/plugins.md +3 -3
- package/docs/tutorials/selenium-grid-config.md +122 -0
- package/docs/tutorials/welcome.md +10 -2
- package/karma.conf.js +156 -45
- package/lib/abr/simple_abr_manager.js +12 -6
- package/lib/ads/ad_manager.js +1 -0
- package/lib/cast/cast_proxy.js +6 -4
- package/lib/cast/cast_receiver.js +3 -0
- package/lib/cea/cea608_data_channel.js +3 -3
- package/lib/cea/cea608_memory.js +1 -1
- package/lib/cea/cea708_service.js +6 -5
- package/lib/cea/cea_decoder.js +1 -1
- package/lib/cea/i_caption_decoder.js +2 -3
- package/lib/cea/mp4_cea_parser.js +11 -5
- package/lib/cea/sei_processor.js +6 -3
- package/lib/dash/dash_parser.js +40 -30
- package/lib/dash/mpd_utils.js +4 -5
- package/lib/dash/segment_list.js +1 -2
- package/lib/dash/segment_template.js +3 -3
- package/lib/hls/hls_parser.js +11 -9
- package/lib/hls/manifest_text_parser.js +4 -3
- package/lib/media/adaptation_set.js +1 -2
- package/lib/media/closed_caption_parser.js +0 -1
- package/lib/media/content_workarounds.js +2 -2
- package/lib/media/drm_engine.js +3 -2
- package/lib/media/media_source_engine.js +3 -2
- package/lib/media/mp4_segment_index_parser.js +1 -4
- package/lib/media/playhead.js +2 -2
- package/lib/media/presentation_timeline.js +18 -8
- package/lib/media/region_observer.js +39 -33
- package/lib/media/region_timeline.js +17 -19
- package/lib/media/streaming_engine.js +7 -7
- package/lib/media/time_ranges_utils.js +1 -3
- package/lib/media/video_wrapper.js +1 -1
- package/lib/net/networking_engine.js +5 -1
- package/lib/offline/storage.js +14 -15
- package/lib/player.js +52 -22
- package/lib/polyfill/all.js +2 -3
- package/lib/polyfill/encryption_scheme.js +1 -1
- package/lib/polyfill/media_capabilities.js +3 -3
- package/lib/polyfill/mediasource.js +1 -1
- package/lib/routing/walker.js +2 -3
- package/lib/text/cue.js +1 -1
- package/lib/text/simple_text_displayer.js +2 -1
- package/lib/text/text_engine.js +1 -1
- package/lib/text/ttml_text_parser.js +8 -5
- package/lib/text/ui_text_displayer.js +1 -1
- package/lib/util/buffer_utils.js +1 -3
- package/lib/util/ebml_parser.js +3 -3
- package/lib/util/error.js +1 -1
- package/lib/util/fake_event_target.js +21 -1
- package/lib/util/iterables.js +0 -46
- package/lib/util/mp4_box_parsers.js +1 -4
- package/lib/util/mp4_parser.js +5 -7
- package/lib/util/periods.js +8 -9
- package/lib/util/platform.js +3 -3
- package/lib/util/pssh.js +1 -4
- package/lib/util/stream_utils.js +4 -3
- package/lib/util/string_utils.js +3 -5
- package/lib/util/uint8array_utils.js +3 -5
- package/lib/util/xml_utils.js +15 -7
- package/package.json +62 -40
- package/roadmap.md +17 -17
- package/test/abr/simple_abr_manager_unit.js +3 -8
- package/test/ads/ad_manager_unit.js +0 -6
- package/test/cast/cast_proxy_unit.js +0 -8
- package/test/cast/cast_receiver_integration.js +1 -18
- package/test/cast/cast_receiver_unit.js +1 -9
- package/test/cast/cast_sender_unit.js +0 -6
- package/test/cast/cast_utils_unit.js +0 -13
- package/test/cea/cea608_memory_unit.js +0 -5
- package/test/cea/cea708_service_unit.js +0 -7
- package/test/cea/cea708_window_unit.js +0 -5
- package/test/cea/cea_decoder_unit.js +0 -6
- package/test/cea/dtvcc_packet_builder_unit.js +0 -3
- package/test/cea/dtvcc_packet_unit.js +0 -5
- package/test/cea/mp4_cea_parser_unit.js +0 -4
- package/test/dash/dash_parser_content_protection_unit.js +1 -10
- package/test/dash/dash_parser_live_unit.js +45 -15
- package/test/dash/dash_parser_manifest_unit.js +4 -17
- package/test/dash/dash_parser_segment_base_unit.js +1 -8
- package/test/dash/dash_parser_segment_list_unit.js +1 -7
- package/test/dash/dash_parser_segment_template_unit.js +0 -9
- package/test/dash/mpd_utils_unit.js +3 -11
- package/test/demo/demo_unit.js +0 -5
- package/test/deprecate/enforcer_unit.js +0 -4
- package/test/deprecate/version_unit.js +0 -2
- package/test/hls/hls_live_unit.js +2 -14
- package/test/hls/hls_parser_unit.js +76 -15
- package/test/hls/manifest_text_parser_unit.js +0 -10
- package/test/media/adaptation_set_criteria_unit.js +3 -7
- package/test/media/adaptation_set_unit.js +0 -2
- package/test/media/buffering_observer_unit.js +1 -4
- package/test/media/closed_caption_parser_unit.js +0 -3
- package/test/media/drm_engine_integration.js +3 -17
- package/test/media/drm_engine_unit.js +4 -23
- package/test/media/manifest_parser_unit.js +0 -4
- package/test/media/media_source_engine_integration.js +0 -7
- package/test/media/media_source_engine_unit.js +1 -14
- package/test/media/mp4_segment_index_parser_unit.js +0 -4
- package/test/media/play_rate_controller_unit.js +0 -4
- package/test/media/playhead_unit.js +8 -16
- package/test/media/presentation_timeline_unit.js +4 -7
- package/test/media/region_observer_unit.js +40 -10
- package/test/media/region_timeline_unit.js +40 -25
- package/test/media/segment_index_unit.js +0 -6
- package/test/media/segment_reference_unit.js +0 -3
- package/test/media/stall_detector_unit.js +0 -5
- package/test/media/streaming_engine_integration.js +9 -36
- package/test/media/streaming_engine_unit.js +11 -35
- package/test/media/time_ranges_utils_unit.js +0 -2
- package/test/media/transmuxer_integration.js +0 -6
- package/test/media/webm_segment_index_parser_unit.js +0 -4
- package/test/net/data_uri_plugin_unit.js +0 -7
- package/test/net/http_plugin_unit.js +0 -9
- package/test/net/networking_engine_unit.js +0 -11
- package/test/offline/download_progress_estimator_unit.js +0 -2
- package/test/offline/indexeddb_storage_unit.js +0 -6
- package/test/offline/manifest_convert_unit.js +0 -8
- package/test/offline/offline_integration.js +1 -10
- package/test/offline/offline_manifest_parser_unit.js +0 -6
- package/test/offline/offline_scheme_unit.js +0 -8
- package/test/offline/offline_uri_unit.js +0 -2
- package/test/offline/storage_compatibility_unit.js +1 -14
- package/test/offline/storage_integration.js +1 -25
- package/test/player_external.js +2 -10
- package/test/player_integration.js +21 -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 +52 -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 +0 -7
- package/test/test/util/fake_networking_engine.js +0 -5
- package/test/test/util/fake_text_displayer.js +0 -5
- package/test/test/util/indexeddb_utils.js +1 -10
- package/test/test/util/jasmine_fetch.js +0 -1
- package/test/test/util/loader.js +0 -18
- package/test/test/util/manifest_generator.js +9 -14
- package/test/test/util/manifest_parser_util.js +0 -6
- package/test/test/util/offline_utils.js +0 -5
- package/test/test/util/simple_fakes.js +9 -26
- package/test/test/util/stream_generator.js +0 -14
- package/test/test/util/streaming_engine_util.js +0 -15
- package/test/test/util/test_scheme.js +1 -19
- package/test/test/util/ttml_utils.js +0 -2
- package/test/test/util/ui_utils.js +0 -9
- package/test/test/util/util.js +15 -26
- package/test/test/util/waiter.js +84 -43
- package/test/text/cue_integration.js +0 -4
- package/test/text/lrc_text_parser_unit.js +0 -4
- package/test/text/mp4_ttml_parser_unit.js +0 -6
- package/test/text/mp4_vtt_parser_unit.js +1 -7
- package/test/text/sbv_text_parser_unit.js +0 -4
- package/test/text/simple_text_displayer_unit.js +1 -8
- package/test/text/srt_text_parser_unit.js +0 -4
- package/test/text/ssa_text_parser_unit.js +0 -5
- package/test/text/text_engine_unit.js +2 -7
- package/test/text/text_track_integration.js +0 -2
- package/test/text/ttml_text_parser_unit.js +2 -11
- package/test/text/ui_text_displayer_unit.js +44 -41
- package/test/text/vtt_text_parser_unit.js +0 -9
- package/test/text/web_vtt_generator_unit.js +0 -3
- package/test/ui/ad_ui_unit.js +0 -11
- package/test/ui/localization_unit.js +0 -3
- package/test/ui/text_displayer_layout_unit.js +9 -19
- package/test/ui/ui_customization_unit.js +0 -6
- package/test/ui/ui_integration.js +0 -16
- package/test/ui/ui_unit.js +1 -17
- package/test/util/abortable_operation_unit.js +4 -9
- package/test/util/array_utils_unit.js +0 -2
- package/test/util/buffer_utils_unit.js +0 -2
- package/test/util/data_view_reader_unit.js +0 -4
- package/test/util/ebml_parser_unit.js +0 -4
- package/test/util/event_manager_unit.js +0 -3
- package/test/util/fake_event_target_unit.js +0 -5
- package/test/util/functional_unit.js +1 -1
- package/test/util/iterables_unit.js +0 -64
- package/test/util/language_utils_unit.js +0 -3
- package/test/util/manifest_parser_utils_unit.js +0 -2
- package/test/util/mp4_box_parsers_unit.js +0 -5
- package/test/util/mp4_parser_unit.js +0 -4
- package/test/util/multi_map_unit.js +0 -3
- package/test/util/object_utils_unit.js +0 -2
- package/test/util/periods_unit.js +14 -7
- package/test/util/pssh_unit.js +0 -5
- package/test/util/state_history_unit.js +0 -2
- package/test/util/stream_utils_unit.js +3 -8
- 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 +3 -0
- package/ui/less/ad_controls.less +6 -6
- package/ui/less/buttons.less +6 -6
- package/ui/less/containers.less +9 -11
- package/ui/less/overflow_menu.less +4 -4
- package/ui/less/range_elements.less +7 -2
- package/ui/locales/sjn-translations.yaml +257 -0
- package/ui/locales/sjn.json +42 -0
- package/ui/localization.js +12 -36
- package/ui/seek_bar.js +2 -1
- package/externs/svgelement.js +0 -18
package/test/player_unit.js
CHANGED
|
@@ -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.Player');
|
|
9
|
-
goog.require('shaka.log');
|
|
10
|
-
goog.require('shaka.media.BufferingObserver');
|
|
11
|
-
goog.require('shaka.media.ManifestParser');
|
|
12
|
-
goog.require('shaka.media.PresentationTimeline');
|
|
13
|
-
goog.require('shaka.media.SegmentReference');
|
|
14
|
-
goog.require('shaka.media.SegmentIndex');
|
|
15
|
-
goog.require('shaka.test.FakeAbrManager');
|
|
16
|
-
goog.require('shaka.test.FakeDrmEngine');
|
|
17
|
-
goog.require('shaka.test.FakeManifestParser');
|
|
18
|
-
goog.require('shaka.test.FakeNetworkingEngine');
|
|
19
|
-
goog.require('shaka.test.FakePlayhead');
|
|
20
|
-
goog.require('shaka.test.FakeStreamingEngine');
|
|
21
|
-
goog.require('shaka.test.FakeTextDisplayer');
|
|
22
|
-
goog.require('shaka.test.FakeVideo');
|
|
23
|
-
goog.require('shaka.test.ManifestGenerator');
|
|
24
|
-
goog.require('shaka.test.Util');
|
|
25
|
-
goog.require('shaka.util.ConfigUtils');
|
|
26
|
-
goog.require('shaka.util.Error');
|
|
27
|
-
goog.require('shaka.util.Iterables');
|
|
28
|
-
goog.require('shaka.util.ManifestParserUtils');
|
|
29
|
-
goog.requireType('shaka.media.Playhead');
|
|
30
|
-
|
|
31
7
|
describe('Player', () => {
|
|
32
8
|
const ContentType = shaka.util.ManifestParserUtils.ContentType;
|
|
33
9
|
const Util = shaka.test.Util;
|
|
@@ -325,7 +301,7 @@ describe('Player', () => {
|
|
|
325
301
|
// We used to fire the event /before/ filtering, which meant that for
|
|
326
302
|
// multi-codec content, the application might select something which will
|
|
327
303
|
// later be removed during filtering.
|
|
328
|
-
// https://github.com/
|
|
304
|
+
// https://github.com/shaka-project/shaka-player/issues/1119
|
|
329
305
|
it('fires after tracks have been filtered', async () => {
|
|
330
306
|
streamingListener.and.callFake(() => {
|
|
331
307
|
const tracks = player.getVariantTracks();
|
|
@@ -621,7 +597,7 @@ describe('Player', () => {
|
|
|
621
597
|
expect(logWarnSpy).not.toHaveBeenCalled();
|
|
622
598
|
});
|
|
623
599
|
|
|
624
|
-
// Regression test for https://github.com/
|
|
600
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/784
|
|
625
601
|
it('does not throw when overwriting serverCertificate', () => {
|
|
626
602
|
player.configure({
|
|
627
603
|
drm: {
|
|
@@ -687,9 +663,9 @@ describe('Player', () => {
|
|
|
687
663
|
});
|
|
688
664
|
|
|
689
665
|
it('configures play and seek range for VOD', async () => {
|
|
690
|
-
player.configure({playRangeStart: 5, playRangeEnd: 10});
|
|
691
666
|
const timeline = new shaka.media.PresentationTimeline(300, 0);
|
|
692
667
|
timeline.setStatic(true);
|
|
668
|
+
timeline.setDuration(300);
|
|
693
669
|
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
|
|
694
670
|
manifest.presentationTimeline = timeline;
|
|
695
671
|
manifest.addVariant(0, (variant) => {
|
|
@@ -697,7 +673,46 @@ describe('Player', () => {
|
|
|
697
673
|
});
|
|
698
674
|
});
|
|
699
675
|
goog.asserts.assert(manifest, 'manifest must be non-null');
|
|
676
|
+
|
|
677
|
+
player.configure({playRangeStart: 5, playRangeEnd: 10});
|
|
700
678
|
await player.load(fakeManifestUri, 0, fakeMimeType);
|
|
679
|
+
|
|
680
|
+
const seekRange = player.seekRange();
|
|
681
|
+
expect(seekRange.start).toBe(5);
|
|
682
|
+
expect(seekRange.end).toBe(10);
|
|
683
|
+
});
|
|
684
|
+
|
|
685
|
+
// Test for https://github.com/shaka-project/shaka-player/issues/4026
|
|
686
|
+
it('configures play and seek range with notifySegments', async () => {
|
|
687
|
+
const timeline = new shaka.media.PresentationTimeline(300, 0);
|
|
688
|
+
timeline.setStatic(true);
|
|
689
|
+
// This duration is used by useSegmentTemplate below to decide how many
|
|
690
|
+
// references to generate.
|
|
691
|
+
timeline.setDuration(300);
|
|
692
|
+
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
|
|
693
|
+
manifest.presentationTimeline = timeline;
|
|
694
|
+
manifest.addVariant(0, (variant) => {
|
|
695
|
+
variant.addVideo(1, (stream) => {
|
|
696
|
+
stream.useSegmentTemplate(
|
|
697
|
+
'$Number$.mp4', /* segmentDuration= */ 10);
|
|
698
|
+
});
|
|
699
|
+
});
|
|
700
|
+
});
|
|
701
|
+
goog.asserts.assert(manifest, 'manifest must be non-null');
|
|
702
|
+
|
|
703
|
+
// Explicitly notify the timeline of the segment references.
|
|
704
|
+
const videoStream = manifest.variants[0].video;
|
|
705
|
+
await videoStream.createSegmentIndex();
|
|
706
|
+
goog.asserts.assert(videoStream.segmentIndex,
|
|
707
|
+
'SegmentIndex must be non-null');
|
|
708
|
+
const references = Array.from(videoStream.segmentIndex);
|
|
709
|
+
goog.asserts.assert(references.length != 0,
|
|
710
|
+
'Must have references for this test!');
|
|
711
|
+
timeline.notifySegments(references);
|
|
712
|
+
|
|
713
|
+
player.configure({playRangeStart: 5, playRangeEnd: 10});
|
|
714
|
+
await player.load(fakeManifestUri, 0, fakeMimeType);
|
|
715
|
+
|
|
701
716
|
const seekRange = player.seekRange();
|
|
702
717
|
expect(seekRange.start).toBe(5);
|
|
703
718
|
expect(seekRange.end).toBe(10);
|
|
@@ -798,7 +813,7 @@ describe('Player', () => {
|
|
|
798
813
|
expect(newConfig.streaming.bufferBehind).toBe(77);
|
|
799
814
|
});
|
|
800
815
|
|
|
801
|
-
// https://github.com/
|
|
816
|
+
// https://github.com/shaka-project/shaka-player/issues/1524
|
|
802
817
|
it('does not pollute other advanced DRM configs', () => {
|
|
803
818
|
player.configure('drm.advanced.foo', {});
|
|
804
819
|
player.configure('drm.advanced.bar', {});
|
|
@@ -1668,8 +1683,8 @@ describe('Player', () => {
|
|
|
1668
1683
|
expect(getActiveTextTrack().id).toBe(spanishTextTrack.id);
|
|
1669
1684
|
});
|
|
1670
1685
|
|
|
1671
|
-
// Regression test for https://github.com/
|
|
1672
|
-
// and https://github.com/
|
|
1686
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/2906
|
|
1687
|
+
// and https://github.com/shaka-project/shaka-player/issues/2909.
|
|
1673
1688
|
it('selectAudioLanguage() can choose role-less tracks', async () => {
|
|
1674
1689
|
// For this test, we use a different (and simpler) manifest.
|
|
1675
1690
|
// Both audio tracks are English; one has a role, and one has no roles.
|
|
@@ -1729,7 +1744,7 @@ describe('Player', () => {
|
|
|
1729
1744
|
expect(getActiveVariantTrack().audioRoles).toEqual([]);
|
|
1730
1745
|
});
|
|
1731
1746
|
|
|
1732
|
-
// https://github.com/
|
|
1747
|
+
// https://github.com/shaka-project/shaka-player/issues/3262
|
|
1733
1748
|
it('selectAudioLanguage() doesn\'t change resolution', () => {
|
|
1734
1749
|
player.configure('abr.enabled', false);
|
|
1735
1750
|
abrManager.chooseIndex = 1;
|
|
@@ -1807,7 +1822,7 @@ describe('Player', () => {
|
|
|
1807
1822
|
expect(getActiveTextTrack().language).toBe('en');
|
|
1808
1823
|
});
|
|
1809
1824
|
|
|
1810
|
-
// https://github.com/
|
|
1825
|
+
// https://github.com/shaka-project/shaka-player/issues/2010
|
|
1811
1826
|
it('changing text lang changes active stream when not streaming', () => {
|
|
1812
1827
|
player.setTextTrackVisibility(false);
|
|
1813
1828
|
|
|
@@ -2112,8 +2127,8 @@ describe('Player', () => {
|
|
|
2112
2127
|
async function runTest(languages, preference, expectedIndex) {
|
|
2113
2128
|
// A manifest we can use to test language selection.
|
|
2114
2129
|
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
|
|
2115
|
-
|
|
2116
|
-
|
|
2130
|
+
for (let i = 0; i < languages.length; i++) {
|
|
2131
|
+
const lang = languages[i];
|
|
2117
2132
|
if (lang.charAt(0) == '*') {
|
|
2118
2133
|
manifest.addVariant(i, (variant) => {
|
|
2119
2134
|
variant.primary = true;
|
|
@@ -2548,7 +2563,7 @@ describe('Player', () => {
|
|
|
2548
2563
|
expect(variants[0].id).toBe(2);
|
|
2549
2564
|
|
|
2550
2565
|
// Now increase the restriction, AbrManager should still be updated.
|
|
2551
|
-
// https://github.com/
|
|
2566
|
+
// https://github.com/shaka-project/shaka-player/issues/1533
|
|
2552
2567
|
abrManager.setVariants.calls.reset();
|
|
2553
2568
|
player.configure({restrictions: {maxBandwidth: Infinity}});
|
|
2554
2569
|
expect(abrManager.setVariants).toHaveBeenCalledTimes(1);
|
|
@@ -3208,7 +3223,7 @@ describe('Player', () => {
|
|
|
3208
3223
|
// Most of our Player unit tests never adapt. This allowed some assertions
|
|
3209
3224
|
// to creep in that went uncaught until they happened during manual testing.
|
|
3210
3225
|
// Repro only happens with audio+video variants in which we only adapt one
|
|
3211
|
-
// type. This test covers https://github.com/
|
|
3226
|
+
// type. This test covers https://github.com/shaka-project/shaka-player/issues/954
|
|
3212
3227
|
|
|
3213
3228
|
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
|
|
3214
3229
|
manifest.addVariant(0, (variant) => {
|
|
@@ -3290,7 +3305,7 @@ describe('Player', () => {
|
|
|
3290
3305
|
|
|
3291
3306
|
describe('load', () => {
|
|
3292
3307
|
it('tolerates bandwidth of NaN, undefined, or 0', async () => {
|
|
3293
|
-
// Regression test for https://github.com/
|
|
3308
|
+
// Regression test for https://github.com/shaka-project/shaka-player/issues/938
|
|
3294
3309
|
manifest = shaka.test.ManifestGenerator.generate((manifest) => {
|
|
3295
3310
|
manifest.addVariant(0, (variant) => {
|
|
3296
3311
|
variant.bandwidth = /** @type {?} */(undefined);
|
|
@@ -4,14 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.asserts');
|
|
8
|
-
goog.require('shaka.routing.Walker');
|
|
9
|
-
goog.require('shaka.test.Util');
|
|
10
|
-
goog.require('shaka.util.AbortableOperation');
|
|
11
|
-
goog.require('shaka.util.Error');
|
|
12
|
-
goog.require('shaka.util.PublicPromise');
|
|
13
|
-
goog.requireType('shaka.routing.Node');
|
|
14
|
-
|
|
15
7
|
describe('Walker', () => {
|
|
16
8
|
const AbortableOperation = shaka.util.AbortableOperation;
|
|
17
9
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!--Generated with https://github.com/
|
|
2
|
+
<!--Generated with https://github.com/shaka-project/shaka-packager version v2.4.1-c731217-release-->
|
|
3
3
|
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT60S">
|
|
4
4
|
<Period id="0">
|
|
5
5
|
<!-- This comment is very long:
|
package/test/test/boot.js
CHANGED
|
@@ -4,18 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.require('goog.asserts');
|
|
8
|
-
goog.require('shaka.Player');
|
|
9
|
-
goog.require('shaka.log');
|
|
10
|
-
goog.require('shaka.polyfill');
|
|
11
|
-
goog.require('shaka.util.Error');
|
|
12
|
-
goog.require('shaka.util.Platform');
|
|
13
|
-
|
|
14
|
-
// If ENABLE_DEBUG_LOADER is not set to false, goog.require() will try to load
|
|
15
|
-
// extra sources on-the-fly using pre-computed pathes in deps.js, which is not
|
|
16
|
-
// applicable for the tests.
|
|
17
|
-
goog['ENABLE_DEBUG_LOADER'] = false;
|
|
18
|
-
|
|
19
7
|
/**
|
|
20
8
|
* Gets the value of an argument passed from karma.
|
|
21
9
|
* @param {string} name
|
|
@@ -384,9 +372,10 @@ function configureJasmineEnvironment() {
|
|
|
384
372
|
};
|
|
385
373
|
}
|
|
386
374
|
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
375
|
+
/**
|
|
376
|
+
* Set up the Shaka Player test environment.
|
|
377
|
+
*/
|
|
378
|
+
function setupTestEnvironment() {
|
|
390
379
|
failTestsOnFailedAssertions();
|
|
391
380
|
failTestsOnNamespacedElementOrAttributeNames();
|
|
392
381
|
failTestsOnUnhandledRejections();
|
|
@@ -399,12 +388,76 @@ try {
|
|
|
399
388
|
shaka.polyfill.installAll();
|
|
400
389
|
|
|
401
390
|
configureJasmineEnvironment();
|
|
391
|
+
}
|
|
402
392
|
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
393
|
+
/**
|
|
394
|
+
* Load a script dynamically and await completion.
|
|
395
|
+
*
|
|
396
|
+
* @param {string} file
|
|
397
|
+
* @return {!Promise}
|
|
398
|
+
*/
|
|
399
|
+
function loadScript(file) {
|
|
400
|
+
return new Promise((resolve, reject) => {
|
|
401
|
+
const script = /** @type {!HTMLScriptElement} */(
|
|
402
|
+
document.createElement('script'));
|
|
403
|
+
script.defer = false;
|
|
404
|
+
script['async'] = false;
|
|
405
|
+
script.onload = resolve;
|
|
406
|
+
script.onerror = reject;
|
|
407
|
+
script.setAttribute('src', '/base/' + file);
|
|
408
|
+
document.head.appendChild(script);
|
|
409
|
+
});
|
|
410
410
|
}
|
|
411
|
+
|
|
412
|
+
/**
|
|
413
|
+
* Load all test scripts and await completion.
|
|
414
|
+
*
|
|
415
|
+
* @return {!Promise}
|
|
416
|
+
*/
|
|
417
|
+
function loadTests() {
|
|
418
|
+
const loadPromises = [];
|
|
419
|
+
for (const file of getClientArg('testFiles')) {
|
|
420
|
+
loadPromises.push(loadScript(file));
|
|
421
|
+
}
|
|
422
|
+
return Promise.all(loadPromises);
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
// Hijack Karma's start() method and start things our way.
|
|
426
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
427
|
+
const originalStart = window.__karma__.start.bind(window.__karma__);
|
|
428
|
+
window.__karma__.start = async () => {
|
|
429
|
+
// Executed when Karma has finished loading everything it loads for us.
|
|
430
|
+
// Those things were all loaded in parallel, and had no interdependencies
|
|
431
|
+
// other than those in the Shaka Player library, tracked by the Closure
|
|
432
|
+
// library's goog.require/goog.provide.
|
|
433
|
+
|
|
434
|
+
// Now we load the tests from here, rather than letting Karma do it. This
|
|
435
|
+
// give us control over the order, so that everything else is loaded and
|
|
436
|
+
// complete before any tests are requested. Then we may reference test
|
|
437
|
+
// utilities and library namespaces in the body of describe() blocks, which
|
|
438
|
+
// are executed synchronously as the test scripts are loaded. Without this
|
|
439
|
+
// ordering, we would have to either:
|
|
440
|
+
// 1. very carefully avoid references in describe() and defer them to
|
|
441
|
+
// beforeAll()
|
|
442
|
+
// or 2. strictly adopt goog.provide/goog.require throughout our tests
|
|
443
|
+
// In those scenarios, failure to do so would only manifest some of the time
|
|
444
|
+
// and on certain platforms. So this seems to be the more robust solution.
|
|
445
|
+
|
|
446
|
+
// See https://github.com/shaka-project/shaka-player/issues/4094
|
|
447
|
+
|
|
448
|
+
try {
|
|
449
|
+
setupTestEnvironment();
|
|
450
|
+
console.log('Set up test environment.');
|
|
451
|
+
await loadTests();
|
|
452
|
+
console.log('Loaded all tests.');
|
|
453
|
+
|
|
454
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
455
|
+
} catch (error) {
|
|
456
|
+
console.error('Error during setup:', error);
|
|
457
|
+
window.__karma__.error(error);
|
|
458
|
+
return;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
// Finally, start the tests.
|
|
462
|
+
originalStart();
|
|
463
|
+
};
|
|
@@ -343,7 +343,7 @@ jasmine.Spy.prototype.and;
|
|
|
343
343
|
/**
|
|
344
344
|
* @param {string} name
|
|
345
345
|
* @return {!jasmine.Spy}
|
|
346
|
-
* @see https://github.com/
|
|
346
|
+
* @see https://github.com/shaka-project/closure-compiler/issues/1422
|
|
347
347
|
*/
|
|
348
348
|
jasmine.createSpy = function(name) {};
|
|
349
349
|
|
|
@@ -360,7 +360,7 @@ jasmine.createSpyObj = function(name, members) {};
|
|
|
360
360
|
* @param {*} obj
|
|
361
361
|
* @param {string} name
|
|
362
362
|
* @return {!jasmine.Spy}
|
|
363
|
-
* @see https://github.com/
|
|
363
|
+
* @see https://github.com/shaka-project/closure-compiler/issues/1422
|
|
364
364
|
*/
|
|
365
365
|
var spyOn = function(obj, name) {};
|
|
366
366
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*! @license
|
|
2
|
+
* Shaka Player
|
|
3
|
+
* Copyright 2016 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// Define the shaka.test namespace before we load the test utilities.
|
|
8
|
+
// Without goog.provide in the test utils, this has to be explicit and come
|
|
9
|
+
// before we load the utils.
|
|
10
|
+
shaka.test = {};
|
|
@@ -4,14 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.CannedIDB');
|
|
8
|
-
|
|
9
|
-
goog.require('shaka.log');
|
|
10
|
-
goog.require('shaka.offline.indexeddb.DBOperation');
|
|
11
|
-
goog.require('shaka.util.BufferUtils');
|
|
12
|
-
goog.require('shaka.util.Uint8ArrayUtils');
|
|
13
|
-
|
|
14
|
-
|
|
15
7
|
/**
|
|
16
8
|
* A testing utility that can be used to dump and restore entire IndexedDB
|
|
17
9
|
* databases. This can be inserted into a running app to snapshot databases
|
|
@@ -4,12 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.CeaUtils');
|
|
8
|
-
|
|
9
|
-
goog.require('shaka.cea.CeaUtils');
|
|
10
|
-
goog.require('shaka.text.Cue');
|
|
11
|
-
|
|
12
|
-
|
|
13
7
|
/**
|
|
14
8
|
* Testing helpers to assist tests for Closed Caption decoders for CEA captions.
|
|
15
9
|
*/
|
|
@@ -4,19 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.Dash');
|
|
8
|
-
|
|
9
|
-
goog.require('goog.asserts');
|
|
10
|
-
goog.require('shaka.dash.DashParser');
|
|
11
|
-
goog.require('shaka.test.FakeNetworkingEngine');
|
|
12
|
-
goog.require('shaka.test.ManifestParser');
|
|
13
|
-
goog.require('shaka.test.Util');
|
|
14
|
-
goog.require('shaka.util.PlayerConfiguration');
|
|
15
|
-
goog.require('shaka.util.StringUtils');
|
|
16
|
-
goog.requireType('shaka.media.SegmentReference');
|
|
17
|
-
goog.requireType('shaka.util.Error');
|
|
18
|
-
|
|
19
|
-
|
|
20
7
|
/** @summary Utilities for working with the DASH parser. */
|
|
21
8
|
shaka.test.Dash = class {
|
|
22
9
|
/**
|
|
@@ -4,15 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.FakeAdManager');
|
|
8
|
-
|
|
9
|
-
goog.require('shaka.ads.AdManager');
|
|
10
|
-
goog.require('shaka.ads.AdsStats');
|
|
11
|
-
goog.require('shaka.util.FakeEvent');
|
|
12
|
-
goog.require('shaka.util.FakeEventTarget');
|
|
13
|
-
goog.requireType('shaka.test.FakeAd');
|
|
14
|
-
|
|
15
|
-
|
|
16
7
|
/**
|
|
17
8
|
* @implements {shaka.extern.IAdManager}
|
|
18
9
|
* @final
|
|
@@ -4,13 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.FakeMediaSourceEngine');
|
|
8
|
-
|
|
9
|
-
goog.require('shaka.media.MediaSourceEngine');
|
|
10
|
-
goog.require('shaka.test.FakeTextDisplayer');
|
|
11
|
-
goog.require('shaka.util.ManifestParserUtils');
|
|
12
|
-
|
|
13
|
-
|
|
14
7
|
/**
|
|
15
8
|
* @summary
|
|
16
9
|
* This simulates multiple SourceBuffers. However, it only
|
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.FakeNetworkingEngine');
|
|
8
|
-
|
|
9
|
-
/** @fileoverview @suppress {missingRequire} */
|
|
10
|
-
|
|
11
|
-
|
|
12
7
|
/**
|
|
13
8
|
* A fake networking engine that returns constant data. The request member
|
|
14
9
|
* is a jasmine spy and can be used to check the actual calls that occurred.
|
|
@@ -4,14 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.IndexedDBUtils');
|
|
8
|
-
|
|
9
|
-
goog.require('shaka.test.Util');
|
|
10
|
-
goog.require('shaka.util.Functional');
|
|
11
|
-
goog.require('shaka.util.Iterables');
|
|
12
|
-
goog.require('shaka.util.PublicPromise');
|
|
13
|
-
|
|
14
|
-
|
|
15
7
|
shaka.test.IndexedDBUtils = class {
|
|
16
8
|
/**
|
|
17
9
|
* Make a connection to indexeddb. This assumes that it will be a new
|
|
@@ -41,8 +33,7 @@ shaka.test.IndexedDBUtils = class {
|
|
|
41
33
|
// connection after 5 attempts (with delays in between), just give
|
|
42
34
|
// up.
|
|
43
35
|
let lastError;
|
|
44
|
-
for (
|
|
45
|
-
shaka.util.Functional.ignored(_);
|
|
36
|
+
for (let i = 0; i < 5; i++) {
|
|
46
37
|
try {
|
|
47
38
|
return await tryOpen(); // eslint-disable-line no-await-in-loop
|
|
48
39
|
} catch (e) { // eslint-disable-line no-restricted-syntax
|
package/test/test/util/loader.js
CHANGED
|
@@ -4,24 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.Loader');
|
|
8
|
-
|
|
9
|
-
goog.require('shaka.log');
|
|
10
|
-
goog.require('shaka.test.TestScheme');
|
|
11
|
-
goog.require('shaka.util.PublicPromise');
|
|
12
|
-
goog.requireType('shaka.Player');
|
|
13
|
-
goog.requireType('shaka.media.InitSegmentReference');
|
|
14
|
-
goog.requireType('shaka.media.PresentationTimeline');
|
|
15
|
-
goog.requireType('shaka.media.SegmentIndex');
|
|
16
|
-
goog.requireType('shaka.media.SegmentReference');
|
|
17
|
-
goog.requireType('shaka.net.NetworkingEngine');
|
|
18
|
-
goog.requireType('shaka.offline.Storage');
|
|
19
|
-
goog.requireType('shaka.ui.Controls');
|
|
20
|
-
goog.requireType('shaka.ui.Element');
|
|
21
|
-
goog.requireType('shaka.ui.Overlay');
|
|
22
|
-
goog.requireType('shaka.util.StringUtils');
|
|
23
|
-
|
|
24
|
-
|
|
25
7
|
/**
|
|
26
8
|
* A stand-in type for the "shaka" namespace. Used when loading the compiled
|
|
27
9
|
* library or when referencing it in ManifestGenerator or TestScheme.
|
|
@@ -4,18 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.ManifestGenerator');
|
|
8
|
-
|
|
9
|
-
goog.require('goog.asserts');
|
|
10
|
-
goog.require('shaka.test.Util');
|
|
11
|
-
goog.require('shaka.util.Iterables');
|
|
12
|
-
goog.require('shaka.util.ManifestParserUtils');
|
|
13
|
-
goog.require('shaka.util.Uint8ArrayUtils');
|
|
14
|
-
goog.requireType('shaka.media.InitSegmentReference');
|
|
15
|
-
goog.requireType('shaka.media.PresentationTimeline');
|
|
16
|
-
goog.requireType('shaka.media.SegmentIndex');
|
|
17
|
-
|
|
18
|
-
|
|
19
7
|
/**
|
|
20
8
|
* @summary
|
|
21
9
|
* A helper class used to generate manifests. This is done through a series
|
|
@@ -604,13 +592,20 @@ shaka.test.ManifestGenerator.Stream = class {
|
|
|
604
592
|
segmentDuration, 'Must pass a non-zero segment duration');
|
|
605
593
|
|
|
606
594
|
const shaka_ = this.manifest_.shaka_;
|
|
607
|
-
|
|
595
|
+
let totalDuration = this.manifest_.presentationTimeline.getDuration();
|
|
608
596
|
goog.asserts.assert(
|
|
609
597
|
isFinite(totalDuration), 'Must specify a manifest duration');
|
|
598
|
+
if (!isFinite(totalDuration)) {
|
|
599
|
+
// Without this, a mistake of an infinite duration would result in an
|
|
600
|
+
// infinite loop and a crash, which would in turn prevent you from seeing
|
|
601
|
+
// the above assertion fail.
|
|
602
|
+
totalDuration = 0;
|
|
603
|
+
}
|
|
604
|
+
|
|
610
605
|
const segmentCount = totalDuration / segmentDuration;
|
|
611
606
|
const references = [];
|
|
612
607
|
|
|
613
|
-
for (
|
|
608
|
+
for (let index = 0; index < segmentCount; index++) {
|
|
614
609
|
const getUris = () => [sprintf(template, index)];
|
|
615
610
|
const start = index * segmentDuration;
|
|
616
611
|
const end = Math.min(totalDuration, (index + 1) * segmentDuration);
|
|
@@ -4,12 +4,6 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
goog.provide('shaka.test.ManifestParser');
|
|
8
|
-
|
|
9
|
-
goog.require('shaka.media.InitSegmentReference');
|
|
10
|
-
goog.require('shaka.media.SegmentReference');
|
|
11
|
-
|
|
12
|
-
|
|
13
7
|
shaka.test.ManifestParser = class {
|
|
14
8
|
/**
|
|
15
9
|
* Verifies the segment references of a stream.
|