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
|
@@ -234,7 +234,8 @@ shaka.media.StreamingEngine = class {
|
|
|
234
234
|
|
|
235
235
|
const mimeType = shaka.util.MimeUtils.getFullType(
|
|
236
236
|
stream.mimeType, stream.codecs);
|
|
237
|
-
this.playerInterface_.mediaSourceEngine.reinitText(
|
|
237
|
+
this.playerInterface_.mediaSourceEngine.reinitText(
|
|
238
|
+
mimeType, this.manifest_.sequenceMode);
|
|
238
239
|
|
|
239
240
|
const textDisplayer =
|
|
240
241
|
this.playerInterface_.mediaSourceEngine.getTextDisplayer();
|
|
@@ -428,7 +429,8 @@ shaka.media.StreamingEngine = class {
|
|
|
428
429
|
// init segment again.
|
|
429
430
|
const fullMimeType = shaka.util.MimeUtils.getFullType(
|
|
430
431
|
stream.mimeType, stream.codecs);
|
|
431
|
-
this.playerInterface_.mediaSourceEngine.reinitText(
|
|
432
|
+
this.playerInterface_.mediaSourceEngine.reinitText(
|
|
433
|
+
fullMimeType, this.manifest_.sequenceMode);
|
|
432
434
|
}
|
|
433
435
|
|
|
434
436
|
// Releases the segmentIndex of the old stream.
|
|
@@ -604,11 +606,10 @@ shaka.media.StreamingEngine = class {
|
|
|
604
606
|
*/
|
|
605
607
|
seeked() {
|
|
606
608
|
const presentationTime = this.playerInterface_.getPresentationTime();
|
|
607
|
-
const smallGapLimit = this.config_.smallGapLimit;
|
|
608
609
|
const ContentType = shaka.util.ManifestParserUtils.ContentType;
|
|
609
610
|
const newTimeIsBuffered = (type) => {
|
|
610
611
|
return this.playerInterface_.mediaSourceEngine.isBuffered(
|
|
611
|
-
type, presentationTime
|
|
612
|
+
type, presentationTime);
|
|
612
613
|
};
|
|
613
614
|
|
|
614
615
|
let streamCleared = false;
|
|
@@ -645,6 +646,10 @@ shaka.media.StreamingEngine = class {
|
|
|
645
646
|
if (type === ContentType.TEXT) {
|
|
646
647
|
this.playerInterface_.mediaSourceEngine.resetCaptionParser();
|
|
647
648
|
}
|
|
649
|
+
|
|
650
|
+
// Mark the media state as having seeked, so that the new buffers know
|
|
651
|
+
// that they will need to be at a new position (for sequence mode).
|
|
652
|
+
mediaState.seeked = true;
|
|
648
653
|
}
|
|
649
654
|
}
|
|
650
655
|
|
|
@@ -674,7 +679,7 @@ shaka.media.StreamingEngine = class {
|
|
|
674
679
|
|
|
675
680
|
if (mediaState.waitingToClearBuffer) {
|
|
676
681
|
// May not be performing an update, but an update will still happen.
|
|
677
|
-
// See: https://github.com/
|
|
682
|
+
// See: https://github.com/shaka-project/shaka-player/issues/334
|
|
678
683
|
shaka.log.debug(logPrefix, 'clear: already waiting');
|
|
679
684
|
return;
|
|
680
685
|
}
|
|
@@ -764,7 +769,9 @@ shaka.media.StreamingEngine = class {
|
|
|
764
769
|
const mediaSourceEngine = this.playerInterface_.mediaSourceEngine;
|
|
765
770
|
const forceTransmuxTS = this.config_.forceTransmuxTS;
|
|
766
771
|
|
|
767
|
-
|
|
772
|
+
|
|
773
|
+
await mediaSourceEngine.init(streamsByType, forceTransmuxTS,
|
|
774
|
+
this.manifest_.sequenceMode);
|
|
768
775
|
this.destroyer_.ensureNotDestroyed();
|
|
769
776
|
|
|
770
777
|
this.setDuration_();
|
|
@@ -805,6 +812,9 @@ shaka.media.StreamingEngine = class {
|
|
|
805
812
|
clearBufferSafeMargin: 0,
|
|
806
813
|
waitingToFlushBuffer: false,
|
|
807
814
|
clearingBuffer: false,
|
|
815
|
+
// The playhead might be seeking on startup, if a start time is set, so
|
|
816
|
+
// start "seeked" as true.
|
|
817
|
+
seeked: true,
|
|
808
818
|
recovering: false,
|
|
809
819
|
hasError: false,
|
|
810
820
|
operation: null,
|
|
@@ -920,9 +930,9 @@ shaka.media.StreamingEngine = class {
|
|
|
920
930
|
// buffering forever at the end.
|
|
921
931
|
// We should only do this if the duration needs to shrink.
|
|
922
932
|
// Growing it by less than 1ms can actually cause buffering on
|
|
923
|
-
// replay, as in https://github.com/
|
|
933
|
+
// replay, as in https://github.com/shaka-project/shaka-player/issues/979
|
|
924
934
|
// On some platforms, this can spuriously be 0, so ignore this case.
|
|
925
|
-
// https://github.com/
|
|
935
|
+
// https://github.com/shaka-project/shaka-player/issues/1967,
|
|
926
936
|
const duration = this.playerInterface_.mediaSourceEngine.getDuration();
|
|
927
937
|
if (duration != 0 &&
|
|
928
938
|
duration < this.manifest_.presentationTimeline.getDuration()) {
|
|
@@ -1272,6 +1282,7 @@ shaka.media.StreamingEngine = class {
|
|
|
1272
1282
|
this.scheduleUpdate_(mediaState, 0);
|
|
1273
1283
|
return;
|
|
1274
1284
|
}
|
|
1285
|
+
|
|
1275
1286
|
await this.append_(
|
|
1276
1287
|
mediaState, presentationTime, stream, reference, result);
|
|
1277
1288
|
}
|
|
@@ -1508,7 +1519,7 @@ shaka.media.StreamingEngine = class {
|
|
|
1508
1519
|
|
|
1509
1520
|
await this.playerInterface_.mediaSourceEngine.setStreamProperties(
|
|
1510
1521
|
mediaState.type, timestampOffset, appendWindowStart,
|
|
1511
|
-
appendWindowEnd);
|
|
1522
|
+
appendWindowEnd, this.manifest_.sequenceMode);
|
|
1512
1523
|
} catch (error) {
|
|
1513
1524
|
mediaState.lastAppendWindowStart = null;
|
|
1514
1525
|
mediaState.lastAppendWindowEnd = null;
|
|
@@ -1565,8 +1576,7 @@ shaka.media.StreamingEngine = class {
|
|
|
1565
1576
|
* @return {!Promise}
|
|
1566
1577
|
* @private
|
|
1567
1578
|
*/
|
|
1568
|
-
async append_(mediaState, presentationTime, stream, reference,
|
|
1569
|
-
segment) {
|
|
1579
|
+
async append_(mediaState, presentationTime, stream, reference, segment) {
|
|
1570
1580
|
const logPrefix = shaka.media.StreamingEngine.logPrefix_(mediaState);
|
|
1571
1581
|
|
|
1572
1582
|
const hasClosedCaptions = stream.closedCaptions &&
|
|
@@ -1584,14 +1594,19 @@ shaka.media.StreamingEngine = class {
|
|
|
1584
1594
|
|
|
1585
1595
|
await this.evict_(mediaState, presentationTime);
|
|
1586
1596
|
this.destroyer_.ensureNotDestroyed();
|
|
1587
|
-
shaka.log.v1(logPrefix, 'appending media segment'
|
|
1597
|
+
shaka.log.v1(logPrefix, 'appending media segment at',
|
|
1598
|
+
(reference.syncTime == null ? 'unknown' : reference.syncTime));
|
|
1588
1599
|
|
|
1600
|
+
const seeked = mediaState.seeked;
|
|
1601
|
+
mediaState.seeked = false;
|
|
1589
1602
|
await this.playerInterface_.mediaSourceEngine.appendBuffer(
|
|
1590
1603
|
mediaState.type,
|
|
1591
1604
|
segment,
|
|
1592
|
-
reference.startTime,
|
|
1605
|
+
reference.syncTime == null ? reference.startTime : reference.syncTime,
|
|
1593
1606
|
reference.endTime,
|
|
1594
|
-
hasClosedCaptions
|
|
1607
|
+
hasClosedCaptions,
|
|
1608
|
+
seeked,
|
|
1609
|
+
this.manifest_.sequenceMode);
|
|
1595
1610
|
this.destroyer_.ensureNotDestroyed();
|
|
1596
1611
|
shaka.log.v2(logPrefix, 'appended media segment');
|
|
1597
1612
|
}
|
|
@@ -1718,7 +1733,7 @@ shaka.media.StreamingEngine = class {
|
|
|
1718
1733
|
const bufferedBehind = presentationTime - startTime;
|
|
1719
1734
|
|
|
1720
1735
|
const overflow = bufferedBehind - bufferBehind;
|
|
1721
|
-
// See: https://github.com/
|
|
1736
|
+
// See: https://github.com/shaka-project/shaka-player/issues/2982
|
|
1722
1737
|
if (overflow <= 0.01) {
|
|
1723
1738
|
shaka.log.v2(logPrefix,
|
|
1724
1739
|
'buffer behind okay:',
|
|
@@ -2017,6 +2032,7 @@ shaka.media.StreamingEngine.PlayerInterface;
|
|
|
2017
2032
|
* waitingToFlushBuffer: boolean,
|
|
2018
2033
|
* clearBufferSafeMargin: number,
|
|
2019
2034
|
* clearingBuffer: boolean,
|
|
2035
|
+
* seeked: boolean,
|
|
2020
2036
|
* recovering: boolean,
|
|
2021
2037
|
* hasError: boolean,
|
|
2022
2038
|
* operation: shaka.net.NetworkingEngine.PendingRequest
|
|
@@ -2061,6 +2077,8 @@ shaka.media.StreamingEngine.PlayerInterface;
|
|
|
2061
2077
|
* The amount of buffer to retain when clearing the buffer after the update.
|
|
2062
2078
|
* @property {boolean} clearingBuffer
|
|
2063
2079
|
* True indicates that the buffer is being cleared.
|
|
2080
|
+
* @property {boolean} seeked
|
|
2081
|
+
* True indicates that the presentation just seeked.
|
|
2064
2082
|
* @property {boolean} recovering
|
|
2065
2083
|
* True indicates that the last segment was not appended because it could not
|
|
2066
2084
|
* fit in the buffer.
|
|
@@ -2079,7 +2097,7 @@ shaka.media.StreamingEngine.MediaState_;
|
|
|
2079
2097
|
* of the Period.
|
|
2080
2098
|
*
|
|
2081
2099
|
* NOTE: This was increased as part of the solution to
|
|
2082
|
-
* https://github.com/
|
|
2100
|
+
* https://github.com/shaka-project/shaka-player/issues/1281
|
|
2083
2101
|
*
|
|
2084
2102
|
* @const {number}
|
|
2085
2103
|
* @private
|
|
@@ -2093,7 +2111,7 @@ shaka.media.StreamingEngine.APPEND_WINDOW_START_FUDGE_ = 0.1;
|
|
|
2093
2111
|
* the Period. This rounding error could then create an artificial gap and a
|
|
2094
2112
|
* stutter when the gap-jumping logic takes over.
|
|
2095
2113
|
*
|
|
2096
|
-
* https://github.com/
|
|
2114
|
+
* https://github.com/shaka-project/shaka-player/issues/1597
|
|
2097
2115
|
*
|
|
2098
2116
|
* @const {number}
|
|
2099
2117
|
* @private
|
|
@@ -6,8 +6,6 @@
|
|
|
6
6
|
|
|
7
7
|
goog.provide('shaka.media.TimeRangesUtils');
|
|
8
8
|
|
|
9
|
-
goog.require('shaka.util.Iterables');
|
|
10
|
-
|
|
11
9
|
|
|
12
10
|
/**
|
|
13
11
|
* @summary A set of utility functions for dealing with TimeRanges objects.
|
|
@@ -56,17 +54,13 @@ shaka.media.TimeRangesUtils = class {
|
|
|
56
54
|
|
|
57
55
|
|
|
58
56
|
/**
|
|
59
|
-
* Determines if the given time is inside a buffered range.
|
|
60
|
-
* gaps, meaning that if the playhead is in a gap, it is considered buffered.
|
|
61
|
-
* If there is a small gap between the playhead and buffer start, consider it
|
|
62
|
-
* as buffered.
|
|
57
|
+
* Determines if the given time is inside a buffered range.
|
|
63
58
|
*
|
|
64
59
|
* @param {TimeRanges} b
|
|
65
60
|
* @param {number} time Playhead time
|
|
66
|
-
* @param {number=} smallGapLimit Set in configuration
|
|
67
61
|
* @return {boolean}
|
|
68
62
|
*/
|
|
69
|
-
static isBuffered(b, time
|
|
63
|
+
static isBuffered(b, time) {
|
|
70
64
|
if (!b || !b.length) {
|
|
71
65
|
return false;
|
|
72
66
|
}
|
|
@@ -78,9 +72,8 @@ shaka.media.TimeRangesUtils = class {
|
|
|
78
72
|
if (time > b.end(b.length - 1)) {
|
|
79
73
|
return false;
|
|
80
74
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
return (time + smallGapLimit >= b.start(0));
|
|
75
|
+
|
|
76
|
+
return time >= b.start(0);
|
|
84
77
|
}
|
|
85
78
|
|
|
86
79
|
|
|
@@ -157,7 +150,7 @@ shaka.media.TimeRangesUtils = class {
|
|
|
157
150
|
return [];
|
|
158
151
|
}
|
|
159
152
|
const ret = [];
|
|
160
|
-
for (
|
|
153
|
+
for (let i = 0; i < b.length; i++) {
|
|
161
154
|
ret.push({start: b.start(i), end: b.end(i)});
|
|
162
155
|
}
|
|
163
156
|
return ret;
|
|
@@ -141,7 +141,7 @@ shaka.media.VideoWrapper = class {
|
|
|
141
141
|
// TODO: Need further investigation why it happens. Before and after
|
|
142
142
|
// setting the current time, video.readyState is 1, video.paused is true,
|
|
143
143
|
// and video.buffered's TimeRanges length is 0.
|
|
144
|
-
// See: https://github.com/
|
|
144
|
+
// See: https://github.com/shaka-project/shaka-player/issues/1298
|
|
145
145
|
this.mover_.moveTo(
|
|
146
146
|
this.video_.currentTime == 0 ?
|
|
147
147
|
startTime :
|
|
@@ -220,6 +220,9 @@ shaka.net.NetworkingEngine = class extends shaka.util.FakeEventTarget {
|
|
|
220
220
|
retryParameters: retryParams,
|
|
221
221
|
licenseRequestType: null,
|
|
222
222
|
sessionId: null,
|
|
223
|
+
drmInfo: null,
|
|
224
|
+
initData: null,
|
|
225
|
+
initDataType: null,
|
|
223
226
|
streamDataCallback: streamDataCallback,
|
|
224
227
|
};
|
|
225
228
|
}
|
|
@@ -431,7 +434,7 @@ shaka.net.NetworkingEngine = class extends shaka.util.FakeEventTarget {
|
|
|
431
434
|
}
|
|
432
435
|
|
|
433
436
|
// Schemes are meant to be case-insensitive.
|
|
434
|
-
// See https://github.com/
|
|
437
|
+
// See https://github.com/shaka-project/shaka-player/issues/2173
|
|
435
438
|
// and https://tools.ietf.org/html/rfc3986#section-3.1
|
|
436
439
|
scheme = scheme.toLowerCase();
|
|
437
440
|
|